首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

给SQL话语传入参数出错

2011-12-19 
给SQL语句传入参数出错源代码如下:OleDbConnectiondbConnnewOleDbConnection(@ ProviderIBMDADB2.1Dat

给SQL语句传入参数出错
源代码如下:
OleDbConnection   dbConn   =   new   OleDbConnection(@ "Provider=IBMDADB2.1;Data   Source=ENTLOGIC;Persist   Security   Info=True;Password=entlogic;User   ID=entlogic ");
OleDbCommand   dbCmd   =   new   OleDbCommand( "SELECT   *   FROM   CC_TASK_BASE   WHERE   RECEIVEDEPT=@UserName ",   dbConn);
dbCmd.Parameters.Add( "@UserName ",   OleDbType.VarChar);
dbCmd.Parameters[ "@UserName "].Value   =   "9989 ";
dbConn.Open();
OleDbDataReader   dr   =   dbCmd.ExecuteReader();

执行到最后一句代码就会出错,提示:
[DB2/NT]   SQL0206N     "@USERNAME "   在使用它的上下文中无效。     SQLSTATE=42703

请问这是怎么回事啊?

[解决办法]
看不出啥错,不知道和DB2数据库有没关系
改成下面的看看:
OleDbCommand dbCmd = new OleDbCommand(String.Format( "SELECT * FROM CC_TASK_BASE WHERE RECEIVEDEPT={0} ", "9989 "), dbConn);
//dbCmd.Parameters.Add( "@UserName ", OleDbType.VarChar);
//dbCmd.Parameters[ "@UserName "].Value = "9989 ";
dbConn.Open();
[解决办法]
你用的DB2吧...
你换成SQL SERVER 看看,你的代码没错
[解决办法]
用的DB2,用?替代参数

OleDbConnection dbConn = new OleDbConnection(@ "Provider=IBMDADB2.1;Data Source=ENTLOGIC;Persist Security Info=True;Password=entlogic;User ID=entlogic ");
OleDbCommand dbCmd = new OleDbCommand( "SELECT * FROM CC_TASK_BASE WHERE RECEIVEDEPT = ? ", dbConn);
dbCmd.Parameters.Add( "? ", OleDbType.VarChar).Value = "9989 ";
dbConn.Open();
OleDbDataReader dr = dbCmd.ExecuteReader();

热点排行