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类型


 

 

 

你可能感兴趣的:(学习笔记)