首页 新闻 会员 周边

无法将类型“string”隐式转换为“System.Data.SqlClient.SqlParameter”

0
悬赏园豆:10 [已解决问题] 解决于 2011-12-10 09:58

这个是dal里的db类里的一个函数,然后我在设置密码页面出现了一个问题

这个函数是一个参数是sql语句 一个是可变参数

 

 1  public static int executesql(string sqlstr, params SqlParameter[] para)
2 {
3 int n = 0;
4 using (SqlConnection con = new SqlConnection(constr))
5 {
6 using (SqlCommand cmd=new SqlCommand(sqlstr,con))
7 {
8 foreach (SqlParameter p in para)
9 {
10 cmd.Parameters.Add(p);
11 }
12 con.Open();
13 n = cmd.ExecuteNonQuery();
14
15 }
16
17
18 }
19 return n;
20
21 }

我这么调用的怎么有错啊

1  string sql = "insert into password(pwd) values(@pwd)";
2
3 db.executesql(sql, new SqlParameter[] { "@pwd", pwdtextBox.Text.Trim()});

报错:错误 1 无法将类型“string”隐式转换为“System.Data.SqlClient.SqlParameter”

     也就是{ "@pwd", pwdtextBox.Text.Trim()} 这两个参数有错

c#
小格调的主页 小格调 | 初学一级 | 园豆:107
提问于:2011-12-09 20:58
< >
分享
最佳答案
0

你想用那个对象初始化器的话{}里面是对象,你在这里面再new出来。

收获园豆:6
顾晓北 | 专家六级 |园豆:10844 | 2011-12-10 09:54

嗯  db.executesql(sql,  new SqlParameter[]{ new SqlParameter("@pwd",pwdtextBox.Text.Trim())});

小格调 | 园豆:107 (初学一级) | 2011-12-10 09:56
其他回答(2)
0
SqlParameter不是这样用的,赋值要用:
SqlParameter myParameter = new SqlParameter("@pwd",SqlDbType.varchar);
myParameter.Value = pwdtextBox.Text.Trim();
参考:http://www.cnblogs.com/morningwang/archive/2007/06/06/773198.html
收获园豆:4
artwl | 园豆:16736 (专家六级) | 2011-12-09 21:47

嗯 是的

支持(0) 反对(0) 小格调 | 园豆:107 (初学一级) | 2011-12-10 09:56
-1

同意顶楼的。

悟行 | 园豆:12559 (专家六级) | 2011-12-09 22:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册