错误提示: 必须声明标量变量 "@username"

jamsunyue 2012-11-01 02:20:04
代码如下:

OleDbConnection conn = new OleDbConnection("Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=test;User Id=sa;Password=sa;");
conn.Open();
OleDbCommand cmd = new OleDbCommand(sql, conn);
OleDbParameter p = new OleDbParameter("@username", "admin");
cmd.Parameters.Add(p);
cmd.ExecuteNonQuery();

不知道错在哪里我用 p.ParameterName 和 p.Value 都能输出 @usernmae 和 admin.
还往各位大侠指教.
...全文
634 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
jamsunyue 2012-11-01
  • 打赏
  • 举报
回复
问题解决,代码入下:

string sql = "insert into test (username) values (?)";
OleDbConnection conn = new OleDbConnection("Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=test;User Id=sa;Password=sa;");
conn.Open();
OleDbCommand cmd = new OleDbCommand(sql, conn);
OleDbParameter p = new OleDbParameter("@P1", "admin");
cmd.Parameters.Add(p);
cmd.ExecuteNonQuery();

///////////////////////////////////////////////////////
一个 ? 表示一个 @P1

感谢 13楼 的兄弟提点.
jamsunyue 2012-11-01
  • 打赏
  • 举报
回复
哪通过 OleDb 如何实现呢?
安得权 2012-11-01
  • 打赏
  • 举报
回复
OleDbParameter 里边是用 @ 这个符号吗

SqlParameter -> @
OracleParameter -> :
mysql -> ?


OleDbParameter 声明或者赋值是不是 方式不对?
jamsunyue 2012-11-01
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
string sql = "insert into test (username) values ('@username')";

加个引号试试,因为你用的值是字符串类型的……
[/Quote]

程序识别为字符串了,在数据库中直接保存了成@username
kensouterry1 2012-11-01
  • 打赏
  • 举报
回复
string sql = "insert into test (username) values ('@username')";

加个引号试试,因为你用的值是字符串类型的……
jamsunyue 2012-11-01
  • 打赏
  • 举报
回复
我用的是 SQL Server 2005 和 .NET Framework 2.0
jamsunyue 2012-11-01
  • 打赏
  • 举报
回复
string sql = "insert into test (username) values ('')";

我将 sql 改成上面这样就不出错了,数据也新增了,那么username的值也是空的.

在 insert 前加 参数定义 似乎也不行.
我就是很懒 2012-11-01
  • 打赏
  • 举报
回复
在insert 前加DECLARE @username VARCHAR(50)
Hauk 2012-11-01
  • 打赏
  • 举报
回复
你的sql里面需要有这个参数才行
比如:string sql = "select * from userInfo where userName=@username";
这样才可以设置参数
我就是很懒 2012-11-01
  • 打赏
  • 举报
回复
OleDbParameter p = new OleDbParameter("username", "admin");
liangchengfck1 2012-11-01
  • 打赏
  • 举报
回复
OleDbConnection conn = new OleDbConnection("Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=test;User Id=sa;Password=sa;");
conn.Open();
OleDbCommand cmd = new OleDbCommand(sql, conn);
OleDbParameter p = new OleDbParameter("@username", "admin");
cmd.Parameters.Add(p);
cmd.ExecuteNonQuery();
//你sql语句 贴出来看看 你可能没声明@username
string sql="insert into table values(@username)";//sql语句 声明@username
jamsunyue 2012-11-01
  • 打赏
  • 举报
回复
不好意思,少了头上一段.

string sql = "insert into test (username) values (@username)";
yy1927 2012-11-01
  • 打赏
  • 举报
回复
sql语句都没,在sql语句里生明@username
DENQH 2012-11-01
  • 打赏
  • 举报
回复
sql=?

111,109

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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