一.配置文件的兩種寫法與使用方法 <configuration> <appSettings> <add key="ConnectionString" value="server=.;database=ADO.NET;uid=sa;pwd=***"/> </appSettings> <connectionStrings> <add name="ConStr" connectionString="server=.;database=ADO.net;uid=sa;pwd=***"/> </connectionStrings> </configuration> 使用方法:添加配置文件,添加引用System.comfiguration //public string con=System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]; public string con=System.Configuration.ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString; 二.編寫SqlHelper類 namespace 自己編寫SqlHelper類 { class SqlHelper////寫類的時候,盡量不使用Public修飾,這是一個封裝的習(xí)慣 { private static string connStr = System.Configuration.ConfigurationManager.AppSettings["SqlConnString"]; //封裝方法的原則:把不變的放在方法里,把變化的放在參數(shù)中 //編寫公用的方法 ///////////////////簡化版本,能精確判讀除了傳過來有Sql語句參數(shù),參數(shù)數(shù)組長度是否為0/////////// /////長度可變參數(shù),這樣可以判斷串過來的參數(shù)是否匹配,精確找到自己所對應(yīng)的方法,完美的結(jié)合了(只傳Sql語句,參數(shù)數(shù)組為0;又傳Sql語句,又傳參數(shù)數(shù)組,還不用再調(diào)用的時候定義數(shù)組)了以上兩種方式 /////調(diào)用者如果不傳,則數(shù)組長度為0,params(必須放在最后一位,其他的都匹配完成,余下的都放在該數(shù)組) //ExecuteNonQuery :執(zhí)行非查詢語句,并返回受影響的行數(shù); public static int ExecuteNonQuery(string sql, params SqlParameter[] paramenters) { using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; //AddRange(數(shù)組名)整體添加參數(shù) cmd.Parameters.AddRange(paramenters); //對連接執(zhí)行T-Sql非查詢語句并返回受影響的行數(shù) return cmd.ExecuteNonQuery(); } } } //ExecuteScalar:執(zhí)行查詢語句,返回數(shù)據(jù)集的第一行第一列 public static object ExecuteScalar(string sql, params SqlParameter[] parameters) { using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; cmd.Parameters.AddRange(parameters); //對連接執(zhí)行T-Sql查詢語句,并返回結(jié)果集的第一行第一列 return cmd.ExecuteScalar(); } } } ////ExecuteDataTable:執(zhí)行查詢語句,返回數(shù)據(jù)集,存放在客戶端 //查詢數(shù)據(jù)集不多的時候使用最合適,一般的系統(tǒng)數(shù)據(jù)集都不大 public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters) { using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; cmd.Parameters.AddRange(parameters); SqlDataAdapter sda = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); sda.Fill(ds); return ds.Tables[0]; } } } 界面后臺代碼如何調(diào)用: //使用可變參數(shù)方法(傳遞Sql語句,參數(shù)數(shù)組長度為0) private void button2_Click(object sender, RoutedEventArgs e) { //不用長度可變參數(shù),調(diào)用起來比較麻煩 string pwd=(string)SqlHelper.ExecuteScalar("select UserPwd from T_User where UserName='jinpeng'");//帶不帶參數(shù)使用的都是同一種方法,這里等于說是參數(shù)數(shù)組長度為0 //string pwd = (string)SqlHelper.ExecuteScalar("select UserPwd from T_User where UserName='jinpeng'", new SqlParameter[0]); MessageBox.Show(pwd); } //使用可變參數(shù)方法(傳遞Sql語句,參數(shù)數(shù)組) private void button4_Click(object sender, RoutedEventArgs e) {
string username = this.txt_UserName.Text.Trim(); //string pwd=(string)SqlHelper.ExecuteScalar("select UserPwd from T_User where UserName=@name",new SqlParameter[]{new SqlParameter("name",username) }); //使用可變參數(shù),好處是,不用重新定義參數(shù)數(shù)組,自己賦值就OK string pwd=(string)SqlHelper.ExecuteScalar("select UserPwd from T_User where UserName=@name",new SqlParameter("name",username)); MessageBox.Show("該用戶的密碼是:"+pwd); } |
|