给参数指定或不指定:@变量标识符的区别是什么?
System.Data.SqlClient.SqlParameter("@id", 1);
System.Data.SqlClient.SqlParameter("id", 1);
System.Data.SqlClient.SqlParameter("@id", 1);
System.Data.SqlClient.SqlParameter("id", 1);
调试欢乐多
{
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));
}
System.Data.SqlClient.SqlParameter("@id", 1);
System.Data.SqlClient.SqlParameter("id", 1);区别就是:没区别,习惯用法而已,你也可以写成其他的任意(sql关键字除外)字符串
在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);
加@与不加@有很大不同的。
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中定义变量一样,@可以省吗?当然不能。