帮忙看看这个是什么原因?

KENNYSKY 2002-08-31 01:16:56
帮忙分析一下为什么,谢谢!

执行结果总是报出如下错误:Must declare the variable '@LName'

程序如下:
------------------------------
static void Main(string[] args)
{
bool ret = true;
string connString = @"Provider=SQLOLEDB;uid=sa;pwd=;server=localhost;database=NETDB";
OleDbConnection myConn = new OleDbConnection(connString);
string sqlCmd = " UPDATE Lists SET Name = @LName ,Description = @LDesc WHERE ID = @LID ";
OleDbCommand myCmd = new OleDbCommand(sqlCmd, myConn);

myCmd.Parameters.Add(new OleDbParameter("LName",OleDbType.VarChar,12));
myCmd.Parameters["LName"].Value = "EE";

myCmd.Parameters.Add(new OleDbParameter("LDescr",OleDbType.VarChar,50));
myCmd.Parameters["LDescr"].Value = "BB";

myCmd.Parameters.Add(new OleDbParameter("LID",OleDbType.Integer,4));
myCmd.Parameters["LID"].Value = 1;
myCmd.Connection.Open();
try
{
int rowcommit = myCmd.ExecuteNonQuery();
Console.WriteLine("Update Row is:{0}",rowcommit);
}
catch (OleDbException ems)
{
Console.WriteLine("Update Error is :{0}",ems.Message);
ret = false;
}
finally
{
myCmd.Connection.Close();
}

}
...全文
21 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
niwalker 2002-09-01
  • 打赏
  • 举报
回复
有些数据库Sql语句中使用的参数不是用@来表示的,比如有的是用?(问号),是不是这个问题,你自己查一下资料。
ztemplar 2002-08-31
  • 打赏
  • 举报
回复
把update语句放到存储过程中去。
KENNYSKY 2002-08-31
  • 打赏
  • 举报
回复
我都对过了,改的变量都是对应的没错,可就是不行!

我真的不明白!谁能帮帮我啊,你们最好能测试一下,真的不行!
saucer 2002-08-31
  • 打赏
  • 举报
回复
are you sure? not "@LDescr"? change "@LDescr" to "@LDesc"?
KENNYSKY 2002-08-31
  • 打赏
  • 举报
回复
改过以后,重新编译后还是这个提示,我真是搞不明白了,谢谢!
(我用SqlConnection,SqlCommand就没有问题)

执行结果总是报出如下错误:Must declare the variable '@LName'

程序如下:
------------------------------
static void Main(string[] args)
{
bool ret = true;
string connString = @"Provider=SQLOLEDB;uid=sa;pwd=;server=localhost;database=NETDB";
OleDbConnection myConn = new OleDbConnection(connString);
string sqlCmd = " UPDATE Lists SET Name = @LName ,Description = @LDesc WHERE ID = @LID ";
OleDbCommand myCmd = new OleDbCommand(sqlCmd, myConn);

myCmd.Parameters.Add(new OleDbParameter("@LName",OleDbType.VarChar,12));
myCmd.Parameters["@LName"].Value = "EE";

myCmd.Parameters.Add(new OleDbParameter("@LDescr",OleDbType.VarChar,50));
myCmd.Parameters["@LDescr"].Value = "BB";

myCmd.Parameters.Add(new OleDbParameter("@LID",OleDbType.Integer,4));
myCmd.Parameters["@LID"].Value = 1;
myCmd.Connection.Open();
try
{
int rowcommit = myCmd.ExecuteNonQuery();
Console.WriteLine("Update Row is:{0}",rowcommit);
}
catch (OleDbException ems)
{
Console.WriteLine("Update Error is :{0}",ems.Message);
ret = false;
}
finally
{
myCmd.Connection.Close();
}

}
niwalker 2002-08-31
  • 打赏
  • 举报
回复
不只是象saucer(思归)说的那样改变"LName"为"@LName",其他的参数都需要做相应的改变。
w18ily 2002-08-31
  • 打赏
  • 举报
回复
应该不是程序本身的原因,检查以下别的方面吧!
saucer 2002-08-31
  • 打赏
  • 举报
回复
myCmd.Parameters.Add(new OleDbParameter("LName",OleDbType.VarChar,12));
=>
myCmd.Parameters.Add(new OleDbParameter("@LName",OleDbType.VarChar,12));
KENNYSKY 2002-08-31
  • 打赏
  • 举报
回复
快来看看啊!不会没有人知道吧
KENNYSKY 2002-08-31
  • 打赏
  • 举报
回复
谁能帮忙解决这个问题啊!奉送100分
KENNYSKY 2002-08-31
  • 打赏
  • 举报
回复
我只是想知道原因是什么?
难道你们在用OleDbConnect和OleDbCommand的时候没有出现过类似的问题吗?

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧