【问题标题】:SqlException in .updateall after convert OLEDB to SQL Server将 OLEDB 转换为 SQL Server 后 .updateall 中的 SqlException
【发布时间】: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


【解决方案1】:

所以设计器仍然在 OLEDB 中,因此我最终删除了数据集并使用正确的连接重新创建,该连接在 SQL 中重建了设计器

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 2021-08-31
    • 2021-02-24
    • 2011-04-28
    相关资源
    最近更新 更多