使用Sybase和DataAdapter

时间:2011-03-23 21:56:10

标签: c# odbc sybase dataadapter

我正在.NET 2.0中编写一个小型Windows窗体应用程序。

我有一个OdbcDataAdapter,它具有如此指定的Insert和Update语句。 select语句也在此代码的前面定义。

OdbcCommand insertCommand = _connection.CreateCommand();
insertCommand.CommandText = "INSERT INTO myTable (ReportID) VALUES (?ReportId)";
_dataAdapter.InsertCommand = insertCommand;
_dataAdapter.InsertCommand.Parameters.Add(new OdbcParameter { ParameterName = "?ReportID", SourceColumn = "ReportID" });
OdbcCommand updateCommand = _connection.CreateCommand();
updateCommand.CommandText = @"
UPDATE 
myTable 
SET 
ReportID = ?ReportID
WHERE ID = ?ID";
_dataAdapter.UpdateCommand = updateCommand;
_dataAdapter.UpdateCommand.Parameters.Add(new OdbcParameter { ParameterName = "?ID", SourceColumn = "ID"});
_dataAdapter.UpdateCommand.Parameters.Add(new OdbcParameter { ParameterName = "?ReportID", SourceColumn = "ReportID"});

无论如何,这是问题所在。当我调用_dataAdapter.Update(_table)时,它适用于插入,但会在Updates上引发错误。它说:ERROR [22018] [SYBASE] [ODBC Sybase驱动程序] [SQL Server]不允许从数据类型“NUMERIC”到“VARCHAR”的隐式转换。使用CONVERT函数运行此查询。

检查变量,没有理由发生这种情况。 ReportID是一个varchar,但由于某些奇怪的原因,在更新时被视为数字。为什么会这样?

更新

刚才发现这是由于我正在设置参数的顺序。我以为我会发布这个,以防其他人被卡住。

0 个答案:

没有答案