当我创建OdbcCommand并添加参数时,VarChar 4000的参数将在生成的sql中转换为文本类型。我的示例代码是:
OdbcConnection dbConnection = new OdbcConnection("DSN=database;UID=uid;PWD=pwd;");
try
{
dbConnection.Open();
OdbcCommand odbcCommand = new OdbcCommand();
odbcCommand.CommandText = "UPDATE Table SET Notes = ? WHERE Notes = ?";
odbcCommand.Connection = dbConnection;
odbcCommand.Parameters.Add("", OdbcType.VarChar, 3999, "");
odbcCommand.Parameters.Add("", OdbcType.VarChar, 4000, "");
odbcCommand.Parameters[0].Value = "0";
odbcCommand.Parameters[1].Value = "1";
odbcCommand.ExecuteNonQuery();
}
finally
{
dbConnection.Close();
}
这是我从SQL Server Profiler
获取的生成的SQLexec sp_executesql N'UPDATE Table SET Notes = @P1 WHERE Notes = @P2',N'@P1 varchar(3999),@P2 text','0','1'
即使MSDN没有说明VarChar here的最大大小。有谁知道为什么会这样,如果这是可配置的?
我认为它是特定于OdbcCommand的东西,因为正确生成了简单数据为SQL Server数据库中存储为varchar(4000)的其他字段生成的更新SQL语句。
答案 0 :(得分:0)
具有4000字节的VARCHAR会将stringsize转换为extented,这将返回文本。
如果MAX_STRING_SIZE = EXTENDED
,则为32767字节 如果MAX_STRING_SIZE = STANDARD ,则4000字节
我认为你不能改变它......所以如果你能发布你想要完成的东西;这将是有帮助的