日期:2014-05-19  浏览次数:21100 次

其他信息: 必须声明变量 '@sno'。 请问什么原因 ?谢谢
OleDbConnection   con   =   new   OleDbConnection( "Provider=SQLOLEDB.1;Integrated   Security=SSPI;Persist   Security   Info=False;User   ID=sa;Initial   Catalog=test;Data   Source=DM ");
                        string   sql   =   "insert   into   stu   (   stu_sno,stu_sname)   values(   @sno,@sname   ) ";
                        //string   sql   =   "delete   from   stu ";
                        OleDbCommand   com   =   new   OleDbCommand(   sql,   con   );
                        com.Parameters.Add( "@sno ",   SqlDbType.Int);
                        com.Parameters[ "@sno "].Value   =   12;//   System.Convert.ToInt32(this.textBox1.Text);
                        com.Parameters.Add( "@sname ",   SqlDbType.NVarChar);
                        com.Parameters.AddWithValue( "@sname ",   this.textBox2.Text);
                        com.Parameters[ "@sname "].Value   =   this.textBox2.Text;

                        OleDbDataAdapter   ada   =   new   OleDbDataAdapter();
                        ds   =   new   DataSet();
                        //ada.SelectCommand.CommandText   =   "select   *   from   stu ";
                        con.Open();
                        com.ExecuteNonQuery();
                        ada.Fill(ds,   "studentinfo ");
                        con.Close();

执行到     com.ExecuteNonQuery();
就发生异常  

未处理的“System.Data.OleDb.OleDbException”类型的异常出现在   System.Data.dll   中。

其他信息:   必须声明变量   '@sno '。

请问什么原因   ?谢谢  


------解决方案--------------------
你用的是OleDb的方式...

代码要这样改
string sql = "insert into stu (stu_sno,stu_sname) values(?,?) ";
OleDbCommand com = new OleDbCommand(sql, con);
com.Parameters.Add( "? ", SqlDbType.Int).Value = 11;
com.Parameters.Add( "? ", SqlDbType.NVarChar).Value = "abc ";
con.Open();
com.ExecuteNonQuery();
con.Close();