之前的代码中都存在大量重复性代码。例如:创建连接,打开连接,创建command。接下来我们讨论如何使得代码简洁,明了。
1、新建项目
2、新建数据库
3、
string dataDir = AppDomain.CurrentDomain.BaseDirectory; if (dataDir.EndsWith(@"\bin\Debug\") || dataDir.EndsWith(@"\bin\Release\")) { dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName; AppDomain.CurrentDomain.SetData("DataDirectory", dataDir); }
添加至Main函数
4、添加新类SQLHelper并定义ExecuteNonQuery(string sqlMessage, params SqlParameter[] parameters)方法
class SQLHelper { //ExecuteNonQuery方法:非查询语句-如Insert,Delete //注意点一:此处将方法写成静态,无需创建实例对象 //注意点二:函数参数使用一个SQL语句和一个可变参数,方便向函数传入多个参数,类似于Console.WriteLine() //注意点三:对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于其他所有类型的语句,返回值为 -1。 //注意点四:连接字符串直接从App.config中读取,需要添加引用 public static int ExecuteNonQuery(string sqlMessage, params SqlParameter[] parameters) { string connStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString; using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = sqlMessage; foreach (SqlParameter myParameter in parameters) { cmd.Parameters.Add(myParameter); } return cmd.ExecuteNonQuery(); } } } }
5、调用SQLHelper.ExecuteNonQuery(string sqlMessage, params SqlParameter[] parameters)方法
private void btnExecuteNonQuery_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(this.tbSqlMessage.Text)) { MessageBox.Show("没有可执行语句"); return; } else { string[] myTexts = this.tbSqlMessage.Text.Split(new char[] { ',' }); string myName = myTexts[0]; int myAge = Convert.ToInt32(myTexts[1]); SQLHelper.ExecuteNonQuery("Insert into T_Person(FName,FAge) values(@FN,@FA)", new SqlParameter("FN", myName), new SqlParameter("FA", myAge)); MessageBox.Show("添加完成"); } }
6、定义ExecuteScalar(string sqlMessage, params SqlParameter[] parameters)方法
1 class SQLHelper 2 { 3 //ExecuteScalar方法:查询并返回获取的第一行第一列中的值。 4 //注意点一:第一行第一列内的值可能是任意类型,返回值类型是object。 5 public static object ExecuteScalar(string sqlMessage, params SqlParameter[] parameters) 6 { 7 string connStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString; 8 using (SqlConnection conn = new SqlConnection(connStr)) 9 { 10 conn.Open(); 11 using (SqlCommand cmd = conn.CreateCommand()) 12 { 13 cmd.CommandText = sqlMessage; 14 foreach (SqlParameter myParameter in parameters) 15 { 16 cmd.Parameters.Add(myParameter); 17 } 18 return cmd.ExecuteScalar(); 19 } 20 } 21 } 22 }
7、调用SQLHelper.ExecuteScalar(string sqlMessage, params SqlParameter[] parameters)方法
private void btnExecuteScalar_Click(object sender, EventArgs e) { //注意ExcuteScalar返回的是第一行第一列的值 object result=SQLHelper.ExecuteScalar("select * From T_Person"); MessageBox.Show(Convert.ToString(result)); }
未完待续