给参数指定或不指定:@变量标识符的区别是什么?
System.Data.SqlClient.SqlParameter("@id", 1);
System.Data.SqlClient.SqlParameter("id", 1);

解决方案 »

  1.   

    写不写都一样.测试: private void button1_Click(object sender, EventArgs e)
            {
                SqlConnection con = new SqlConnection("Server=.;Integrated Security=True;Database=pubs");
                //更新
                DataTable dt = this.dataGridView1.DataSource as DataTable;
                SqlDataAdapter da2 = new SqlDataAdapter();
                SqlCommand cmd = new SqlCommand("update authors set au_lname=@au_lname where au_id=@au_id",con);
                da2.UpdateCommand = cmd;
                da2.UpdateCommand.Parameters.Add(new SqlParameter("au_lname", SqlDbType.VarChar, 40, "au_lname"));
                da2.UpdateCommand.Parameters.Add(new SqlParameter("au_id", SqlDbType.VarChar, 11, "au_id"));            foreach (DataRow dr in dt.Rows)
                {
                    dr["au_lname"] += " test";
                }            da2.Update(dt);        }
    我实际项目中的应用:public override AbstractReporting GetDetail(int abstractReportingId)
    {
    DbCommand dbc = database.GetStoredProcCommand(SP_GETDETAIL);

    database.AddInParameter(dbc, "IAbstractReportingId", DbType.Int32, abstractReportingId);

    return FillObject(database.ExecuteReader(dbc));
    }
      

  2.   

    给参数指定或不指定:@变量标识符的区别是什么? 
    System.Data.SqlClient.SqlParameter("@id", 1); 
    System.Data.SqlClient.SqlParameter("id", 1);区别就是:没区别,习惯用法而已,你也可以写成其他的任意(sql关键字除外)字符串
      

  3.   

    对于sql语句中一个@的参数@au_id,在sqlParameter中,可以用@au_id,也可以用au_id。要是bt点的,用两个@,你就不能随便省略@了。对于sql语句 : select * from authors where au_id=@@au_id
    在SqlParameter中,也只能用@@au_id,而不能是@au_id,或au_id。
    SqlCommand cmd = new SqlCommand("select * from authors where au_id=@@au_id", con);
                SqlParameter sp = new SqlParameter("@@au_id", SqlDbType.VarChar, 11);
                sp.Value = "172-32-1176";
                cmd.Parameters.Add(sp);
      

  4.   

    注:一下代码自己已经尝试,保证可靠。
    加@与不加@有很大不同的。
    SqlCommand sqlCmd=new SqlCommand("Select * From StudentInfo Where SName=@SName And SAge=@SAge",sqlCon);
                SqlParameter sp1=new SqlParameter("@SName",SqlDbType.NChar);
                sp1.Value="Tom";
                SqlParameter sp2=new SqlParameter("@SAge",SqlDbType.TinyInt);
                sp2.Value=20;
                sqlCmd.Parameters.Add(sp1);
                sqlCmd.Parameters.Add(sp2);
                SqlDataAdapter sda=new SqlDataAdapter(sqlCmd);
                DataTable dt=new DataTable();
                sda.Fill(dt);
    执行过程中,将"Tom"付值给@SName,20赋值给@SAge。
    语句1:new SqlCommand("Select * From StudentInfo Where SName=@SName And SAge=@SAge",sqlCon);
    语句2:SqlParameter sp1=new SqlParameter("@SName",SqlDbType.NChar);
    中的@一定不能少。
    就像在sql中定义变量一样,@可以省吗?当然不能。