1. 程式人生 > >黑馬程式設計師之ADO.NET學習筆記:SqlParameter(Sql引數)

黑馬程式設計師之ADO.NET學習筆記:SqlParameter(Sql引數)

-------------------------------------------------2345王牌技術員聯盟2345王牌技術員聯盟、期待與您交流!-------------------------------------------------------

1. 幾個重要的屬性    

ParameterName設定引數名

Value給引數設定值

     Size:設定引數位元組最大大小(以位元組為單位)

     SqlDbType:引數在SQL中的型別  

SqlParameter paras =new SqlParameter()

{

             ParameterName =

"@name",

             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(

"@name","Tom");

        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王牌技術員聯盟、期待與您交流!---------------------------------------------------------