码迷,mamicode.com
首页 > 其他好文 > 详细

C# 学习笔记01

时间:2014-05-10 01:27:39      阅读:298      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   java   tar   

想写一个app可以访问数据库,实现对数据库的查询,修改等,突然发现知识实在有限,故选择C#来实现此app。

使用简单的三层架构来作为此app的架构。表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。

从底层开始实现对数据库的读取,该例中使用MS SQL Server 2K8 R2。

在解决方案中新建App.config,把数据库连接字符保存在里面,方便修改

bubuko.com,布布扣
<?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>
bubuko.com,布布扣

SQLhelper 

bubuko.com,布布扣
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语句

bubuko.com,布布扣
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类型


 

 

 

C# 学习笔记01,布布扣,bubuko.com

C# 学习笔记01

标签:style   blog   class   code   java   tar   

原文地址:http://www.cnblogs.com/dreamtaker/p/3708066.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!