想写一个app可以访问数据库,实现对数据库的查询,修改等,突然发现知识实在有限,故选择C#来实现此app。
使用简单的三层架构来作为此app的架构。表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。
从底层开始实现对数据库的读取,该例中使用MS SQL Server 2K8 R2。
在解决方案中新建App.config,把数据库连接字符保存在里面,方便修改
<?xml version="1.0" encoding="utf-8" ?> <configuration><connectionStrings><add name ="connstr"connectionString="Data Source=.; Initial Catalog=MyTest;User ID=sa;Password=123456 "/></connectionStrings> </configuration>
SQLhelper


static class SqlHelper{public static readonly string connstr = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;public static int ExecuteNonQuery(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);return cmd.ExecuteNonQuery();//对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数 }}}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);return cmd.ExecuteScalar();//执行查询,并返回查询所返回的结果集中第一行的第一列。 忽略其他列或行。 }}}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);DataSet dataset = new DataSet();//表示一个存放于内存中的数据缓存SqlDataAdapter adapter = new SqlDataAdapter(cmd);//表示用于填充 DataSet 和更新 SQL Server 数据库的一组数据命令和一个数据库连接。 此类不能被继承 adapter.Fill(dataset);return dataset.Tables[0];}}}public static object FromDbValue(object value){if (value == DBNull.Value){return null;}else{return value;}}public static object ToDbValue(object value){if (value == null){return DBNull.Value;}else{return value;}}}
public static int ExecuteNonQuery(string sql, params SqlParameter[] parameters)
ExecuteNonQuery 用来实现Insert,delete,update等SQL语句


public static object ExecuteScalar(string sql,params SqlParameter[] parameters)
ExecuteScalar执行查询,并返回查询所返回的结果集中第一行的第一列或空引用(如果结果集为空).忽略其他列或行.
使用 ExecuteScalar 方法从数据库中检索单个值。因为不用创建行集、查找值并关闭行集,所以产生的系统开销非常小与使用 ExecuteReader方法,然后使用 SqlDataReader 返回的数据执行生成单个值所需的操作相比,此操作需要的代码较少
public static DataTable ExecuteDataTable(string sql,params SqlParameter[] parameters)
ExecuteDataTable 将查询数据库中的结果表存放在DataSet中,并返回DataTable类型