在ADO.NET中, public SqlParameterCollection Parameters {get;}
会得到一个SqlParameter属性。下面通过一个例子进行详细的认识吧。
//例如在一个事件处理方法中有
using (SqlCommand cmd=new SqlCommand())
{
try{
cmd.Connection=conn;
conn.Open();
cmd.CommandType=CommandType.StoredProcedure;
cmd.CommandText="INSERT";
SqlParameter[] prams={
new SqlParameter("@id",SqlDbType.VarChar,8);
new SqlParameter("@name",SqlDbType.VarChar,50);
new SqlParameter("@money",SqlDbType.Float);
new SqlParameter("@age",SqlDbType.VarChar,50);
};
prams[0].Value=this.TextBox1.Text;
prams[1].Value=this.TextBox2.Text;
prams[2].Value=this.TextBox2.Text;
prams[3].Value=this.TextBox3.Text;
//添加参数
foreach(SqlParameter parameter in prams){
cmd.Parameters.Add(parameter);
}
SQlParameter sqlParameter=cmd.Parameters.Add("@Return",SqlDbType.Int);
sqlParameter=ParameterDirection.ReturnValue;
cmd.ExecuteNonQuery();
}
catch(Exception e){
throw new Exception(e.Message);
}
int i=Convert.ToInt16(cmd.Parameters["@return"].Value.toString());
if(i==1){
MessageBox.Show("添加成功");
}else if(i==-1){
MessageBox.Show("添加过程失败");
}
}
}
```
----------
总结:
这里的parameter数组实现的SQL过程就相当于Java里面的PreparedStatement的占位符方式,省去了sql语句书写易错的麻烦。
具体的使用步骤就是:
- 先声明一个Parameter数组,
- 然后为相应位置填充具体的含义(应该和要进行操作的数据库中对应的字段保持一致),
- 然后就在可以在声明的特定的字段中获取到执行结果返回的值了。如
i=Convert.ToInt16(cmd.Parameters[“@return”].Value.toString()); ``
SQlParameter sqlParameter=cmd.Parameters.Add(“@Return”,SqlDbType.Int);
便是从
sqlParameter=ParameterDirection.ReturnValue;`声明过之后用到的