1、使用SqlParameter類表示 SqlCommand 的參數。
2、SqlParameter提供兩個參數,參數別名(@前綴)與參數值。
3、SqlCommand提供一個Parameter屬性,該屬性表示SqlParameter的集合,使用Add方法添加(記得new)。
4、Parameter屬性表示的是一個集合,不使用了要清空。
練習,登錄驗證:
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 6 while (true) 7 { 8 Console.WriteLine("用戶名"); 9 string name = Console.ReadLine(); 10 Console.WriteLine("密碼"); 11 string pwd = Console.ReadLine(); 12 13 string constr = @"server=.\sqlexpress;database=MyDataBase;uid=sa;pwd=sa"; 14 using (SqlConnection sqlconn = new SqlConnection(constr)) 15 { 16 //老方法 17 //string cmdstr = string.Format(@"select * from loginn where uname='{0}' and upwd='{1}'",name,pwd); 18 //參數化查詢 19 string cmdstr = @"select * from loginn where uname=@name1 and upwd=@pwd1"; 20 //@name1,@pwd1僅僅是別名而已,相當於局部變量 21 using (SqlCommand cmd = new SqlCommand(cmdstr, sqlconn)) 22 { 23 //加參數 24 cmd.Parameters.Add(new SqlParameter( "@name1", name));//把name中的值賦給@name1 25 cmd.Parameters.Add(new SqlParameter("@pwd1", pwd)); //注意Add方法中是new了一個 SqlParameter 26 // cmd.Parameters.AddWithValue("@pwd1", pwd);//此方法內部實現同Add,推薦用前者 27 if (sqlconn.State == ConnectionState.Closed) 28 { 29 sqlconn.Open(); 30 } 31 32 33 if (Convert.ToInt32(cmd.ExecuteScalar()) == 1) 34 { 35 Console.WriteLine("登錄成功"); 36 break; 37 } 38 else 39 { 40 Console.WriteLine("重新輸入"); 41 continue; 42 } 43 } 44 45 } 46 47 } 48 Console.ReadKey(); 49 } 50 }
如有錯誤,謝謝指正