【发布时间】:2018-01-28 18:36:53
【问题描述】:
我正在用 C# 编写一个支持 MS Access (.accdb) 的应用程序。我打电话(根据建议)认为 SQL Server 对我的系统来说是一个更好的主意,因此我花了最后 8 小时重新编写 SQL Server。
作为背景;
- 将所有 OLEDB 连接、命令等更改为 Sql
- 修复了从
?到@value的所有参数和变量 - 修复了所有 SQL 字符串错误
现在我的所有表单都可以正常工作,但使用 Visual Studio 'wizard' 完成的 BINDING 的表单除外(如果这就是它的名称)。
我有 5 个表格,用
填写this.tbljobTableAdapter.Fill(this.websterdbDataSet.tbljob);
根据该信息,他们都使用DataGridView。
在“保存并关闭”时,此代码运行:
this.Validate();
this.tbluserBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.websterdbDataSet);
_owner.PerformRefresh();
this.Close();
this.Dispose();
这仍然适用于我的.ACCDB 版本(我正在从备份中检查)100%,但现在它不是 SQL Server。
如果我按保存并关闭并且没有更改任何内容,它会关闭,但如果我更改任何字段,它会失败(来自我的日志):
数据时间:21/08/2017 12:12:20 AM
异常名称:“`”附近的语法不正确。
事件名称:System.Windows.Forms.MouseEventArgs
控件名称:BtnSave
错误行号:86
表单名称:frmjoblist
有什么想法可以进一步调试吗?
我认为这是我在将 Try and Catch 添加到所有部分时所做的事情,但最终这发生在我使用向导而不是手动创建、绑定和编写 SQL 更新字符串的特定 5 个表单上。
感谢您的任何建议/指导。
天使
【问题讨论】:
-
查询语句出错。适配器有一个包含“命令文本”的命令。错误出现在您未发布的命令文本的字符串中。
-
非常感谢 jdweng,找到了!现在修复它:P 当我从 OLEDB 更改为 SQL 以使其...更快时,我替换了所有“?”用“@”然后我可以只写变量。好吧,我所有的表适配器都没有修复,所以我想我还有一些工作要做!有没有办法重新创建适配器?或者只是重新创建数据网格视图..
-
我非常需要它来重新构建数据集的设计器部分,因为它已经在 OLEDB 中构建了它们...
-
@jdweng 关于如何重建表适配器的任何想法,或者我应该删除数据集中的表并希望使用新字符串重建!
-
一个适配器有一个 SQL 命令。该命令有四个查询:选择、删除、插入和更新。每个查询都有一个命令文本。所以你应该可以修改适配器的属性来改变字符串。
标签: c# sql-server data-binding datagridview sqlexception