黑馬程式設計師之ADO.NET學習筆記:SqlParameter(Sql引數)
-------------------------------------------------2345王牌技術員聯盟、2345王牌技術員聯盟、期待與您交流!-------------------------------------------------------
1. 幾個重要的屬性
ParameterName:設定引數名
Value:給引數設定值
Size:設定引數位元組最大大小(以位元組為單位)
SqlDbType:引數在SQL中的型別
SqlParameter paras =new SqlParameter()
{
ParameterName =
Value =10,
SqlDbType = SqlDbType.Int,
Size =4
};
2.命令物件新增引數集合的幾種方法
①AddWithValue
②Add
③AddRange
using (SqlConnection connection =new SqlConnection(""))
{
SqlCommand command = connection.CreateCommand();
command.CommandText ="";
//可以使用這種方式新增多個引數,不過方式不夠好
command.Parameters.Add("@name", SqlDbType.NVarChar).Value = "Tom"; //第一種方式
command.Parameters.Add("@age",SqlDbType.Int).Value = 888;
command.Parameters.Add("@address", SqlDbType.NVarChar,100).Value ="Beijing";
//這種方式直接給定引數名和引數就可以了,可操作性比較差
command.Parameters.AddWithValue(
command.Parameters.AddWithValue("@age",888).SqlDbType = SqlDbType.Int;
command.Parameters.AddWithValue("@address","Beijing").SqlDbType = SqlDbType.NVarChar;
//直接使用引數集合新增你需要的引數,推薦這種寫法
SqlParameter[] parameters =new SqlParameter[]
{
new SqlParameter("@name",SqlDbType.NVarChar,100){Value = "Tom"},
new SqlParameter("@age",SqlDbType.Int,2){Value = 888},
new SqlParameter("@address",SqlDbType.NVarChar,20){Value = "Beijing"},
};
command.Parameters.AddRange(parameters); //引數也可以是一個Array陣列,如果採用陣列引數程式碼的可讀性和擴充套件性就不是那麼好了
//當我們把引數都新增好之後,會生成一個“SqlParameterCollection”集合型別,相當於引數的集合
//那麼我們就可以對這些引數進行修改和移除了
//說穿了“SqlParameterCollection”內部其實是一個List<SqlParameter>的集合,只是它裡面的複雜度比較高,考慮的很全面
command.Parameters[0].Value ="Tom";
command.Parameters[0].Size =200;
}
3.說說“SqlParameterCollection”,引數集合
上面新增的“SqlParameter”引數都被新增到了“SqlParameterCollection”集合中去了,所以我們才能夠對它進行讀取和修改!
4.定義適當的引數屬性獲取儲存過程的返回值(return) → Direction = ParameterDirection.Output
using (SqlConnection conn =new SqlConnection(""))
{
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText ="myProc";
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter[] paras =new[] //定義引數陣列
{
new SqlParameter("@Description",SqlDbType.NVarChar,50,"RegionDescription"),
new SqlParameter("@RegionID",SqlDbType.Int,0,ParameterDirection.Output,false,0,0,"RegionID",DataRowVersion.Default,null) //定義此引數是Output引數
};
cmd.Parameters.AddRange(paras);
cmd.UpdatedRowSource = UpdateRowSource.OutputParameters;//這句話可以不要
//給引數賦值
cmd.Parameters["@Description"].Value ="Tom";
cmd.ExecuteNonQuery();
//獲取返回值
int myRegionID = (int)cmd.Parameters["@RegionID"].Value;
Console.WriteLine("這是返回值:{0}", myRegionID.ToString());
}
---------------------------------------------------2345王牌技術員聯盟、2345王牌技術員聯盟、期待與您交流!---------------------------------------------------------