首页 > 学院 > 开发设计 > 正文

C# 学习笔记01

2019-11-17 03:11:05
字体:
来源:转载
供稿:网友

C# 学习笔记01

想写一个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;            }        }    }
View Code
public static int ExecuteNonQuery(string sql,             params SqlParameter[] parameters)

ExecuteNonQuery 用来实现Insert,delete,update等SQL语句

public static object ExecuteScalar(string sql,            params SqlParameter[] parameters)
View Code

ExecuteScalar执行查询,并返回查询所返回的结果集中第一行的第一列或空引用(如果结果集为空).忽略其他列或行.

使用 ExecuteScalar 方法从数据库中检索单个值。因为不用创建行集、查找值并关闭行集,所以产生的系统开销非常小与使用 ExecuteReader方法,然后使用 SqlDataReader 返回的数据执行生成单个值所需的操作相比,此操作需要的代码较少

 public static DataTable ExecuteDataTable(string sql,            params SqlParameter[] parameters)

ExecuteDataTable 将查询数据库中的结果表存放在DataSet中,并返回DataTable类型


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表