必须声明标量变量 "@id"。

guo83551218 2012-07-28 01:09:20
//删除数据
public int DelAdmin(int sId)
{
OleDbConnection myconn = new OleDbConnection(DB.conn);
OleDbCommand mycmd = new OleDbCommand("delete from baoming where id =@id", myconn);
mycmd.Parameters.Add("@id", sId);
int nResult = -1;
try
{
myconn.Open();
nResult = mycmd.ExecuteNonQuery();
}
catch (OleDbException ex)
{
throw new Exception(ex.Message, ex);
}
finally
{
myconn.Close();
}
return nResult;
}

sId肯定传过来值了,但是老报错




必须声明标量变量 "@id"。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.OleDb.OleDbException: 必须声明标量变量 "@@id"。

源错误:





行 94: {
行 95: myconn.Open();
行 96: nResult = mycmd.ExecuteNonQuery();
行 97: }
行 98: catch (OleDbException ex)
...全文
429 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
SocketUpEx 2012-07-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

Access中id是关键字,需要使用[]包裹

[/Quote]
真的吗?
虽然是不是关键字都可以用[]
但id真不是关键字
Name真是关键字
牛哥_ 2012-07-28
  • 打赏
  • 举报
回复
SQL ole 不分了
guo83551218 2012-07-28
  • 打赏
  • 举报
回复
public int DelAdmin(int sId)
{
SqlConnection myconn = new SqlConnection(DB.conn);
SqlCommand mycmd = myconn.CreateCommand();
mycmd.CommandText = "delete from baoming where [id]=@id";
mycmd.Parameters.Add("@id", sId);

int nResult = -1;
try
{
myconn.Open();
nResult = mycmd.ExecuteNonQuery();
}
catch (OleDbException ex)
{
throw new Exception(ex.Message, ex);
}
finally
{
myconn.Close();
}
return nResult;
}


改好了 多谢了。
暖枫无敌 2012-07-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

我先在用的是sqlserver2003数据库,我就是把以前的写Access的连接拿过来用,以前就不报错。是不是Iis配置问题或者web.config配置的问题。
[/Quote]
晕倒!

SQL Server中使用的是

SqlConnection、SqlCommand
guo83551218 2012-07-28
  • 打赏
  • 举报
回复
我先在用的是sqlserver2003数据库,我就是把以前的写Access的连接拿过来用,以前就不报错。是不是Iis配置问题或者web.config配置的问题。
guo83551218 2012-07-28
  • 打赏
  • 举报
回复
我试了加[]没有用还是报一样的错误
暖枫无敌 2012-07-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

我不光需要删除 还有添加和修改呢,直接拼字符串太麻烦了。
[/Quote]
那你继续用参数吧,但是类似关键字的你需要加上一对[]

OleDbCommand mycmd = new OleDbCommand("delete from baoming where [id] =@id", myconn);

mycmd.Parameters.Add("@id", sId);
guo83551218 2012-07-28
  • 打赏
  • 举报
回复
我不光需要删除 还有添加和修改呢,直接拼字符串太麻烦了。
暖枫无敌 2012-07-28
  • 打赏
  • 举报
回复
Access中id是关键字,需要使用[]包裹

另外你这个也不必用参数


//删除数据
public int DelAdmin(int sId)
{
OleDbConnection myconn = new OleDbConnection(DB.conn);
OleDbCommand mycmd = new OleDbCommand("delete from baoming where [id] ="+sId, myconn);
int nResult = -1;
try
{
myconn.Open();
nResult = mycmd.ExecuteNonQuery();
}
catch (OleDbException ex)
{
throw new Exception(ex.Message, ex);
}
finally
{
myconn.Close();
}
return nResult;
}

62,046

社区成员

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

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

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

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