这两天学的最重要的知识就是如何把数据库和C#联系在一块。学会了了把主函数中重要的代码都抽象出来,封装成函数。这样方便以后的调用也减少了主函数的臃肿。
首先知道ADO.NET是断开式数据库,是把所有的数据库对象转换成C#对象。
我在数据库中建了一个my数据库,在my里建了一个star的表,表里有name,sex,age三列。
下面这个函数就是这两天整理的用C#操作star表相关方法,其中的SqlHelper类可以保存着以后都可以用的。
using System; using System.Data; using System.Data.SqlClient; public class Helper { public static void Main() { string strcon = "server=.;database=my;uid=sa;pwd=1"; SqlHelper helper = new SqlHelper(strcon); //----------------------------------------------------------------// //非查询没变量 string sql1 = "delete from star where name = '林志玲'"; //非查询有变量 string sql = "insert into star values(@name,@sex,@age)"; SqlParameter[] ps = new SqlParameter[] { new SqlParameter("@name",SqlDbType.VarChar,20), new SqlParameter("@sex",SqlDbType.VarChar,4), new SqlParameter("@age",SqlDbType.Int,4) }; ps[0].Value = "林志玲"; ps[1].Value = "女"; ps[2].Value = 30; //--------------------------------------------------------------------------// //查询语句无变量 string sql2 = "select * from star"; //---------------**********---------------// //查询语句有变量 string sql3="select * from star where age=@age"; SqlParameter ps1 = new SqlParameter("@age",SqlDbType.Int,4); ps1.Value = 38; SqlDataReader reader = helper.ExecuteQuery(sql3,ps1); using(reader) { while (reader.Read()) { Console.WriteLine(reader["name"].ToString()+reader["sex"].ToString() + reader["age"].ToString()); } } //-----------------------------------------------------------------------------// helper.Close(); } } public class SqlHelper { private SqlConnection con = null; private SqlCommand cmd = null; private string connectionString; public string ConnectionString { get{return this.connectionString;} set{this.connectionString = value;} } public SqlHelper(string strcon) { con = new SqlConnection(strcon); cmd = new SqlCommand(); cmd.Connection = con; this.connectionString =strcon; } /* 执行非查询语句 */ public int ExecuteNonQuery(string sql,params SqlParameter[] param) { PreparedCommand(sql,param); int i = cmd.ExecuteNonQuery(); con.Close(); return i; } public int ExecuteNonQuery(string sql) { PreparedCommand(sql,null); int i = cmd.ExecuteNonQuery(); con.Close(); return i; } /* 执行查询语句 */ public SqlDataReader ExecuteQuery(string sql,params SqlParameter[] param) { PreparedCommand(sql,param); return cmd.ExecuteReader(); } public SqlDataReader ExecuteQuery(string sql) { PreparedCommand(sql,null); return cmd.ExecuteReader(); } /* 用来准备(初始化)Command对象 */ public void PreparedCommand(string sql,params SqlParameter[] param) { /* SqlCommand cmd1 = null; if(cmd!=null) { cmd1 = cmd; } else{ cmd1 = new SqlCommand(); }*/ cmd.CommandText = sql; //清空Parameters中的参数 cmd.Parameters.Clear(); if(param!=null) { foreach(SqlParameter p in param) { cmd.Parameters.Add(p); } } con.Open(); } /* 打开数据库 */ private void Open() { con.Open(); } /* 关闭数据库 */ public void Close() { cmd.Dispose(); con.Close(); } }