Advertisement

C#系列---③在C#中使用ADO.NET技术进行数据库操作(包括增删改查)

阅读量:

VB与C#机房系统重构关联

相同点分析

1、机房的运作机制保持一致,其核心在于上下机流程以及消费时长计算的逻辑并未发生任何变动。

2、界面的整体排版基本保持相似。

3、数据连接的方式均为通过实例化对象,并借助对象所提供的方法实现连接。

差异特征分析

1、系统耦合度分析

VB模块间关联性较强:所有功能实现代码均集中于单一窗体内部进行编写。

C#模块间关联性较弱:通过引入七层架构模式实现数据交互与传输。

2、面向对象设计与实现

程序设计视角:VB更倾向于采用过程化的设计理念

对象导向特性:C#的重构工作则更加注重对象导向的设计模式

3、数据库连接方式

在模块内部设计一个函数:VB通过调用模块中所构建的ExecuteSQL函数来实现连接操作。

ADO.NET技术的应用:在C#编程语言中,通常借助ADO.NET技术,通过生成连接实例与命令实例的方式完成数据库连接。

在先前的几篇博客文章中,我们已经讲解了三层架构的相关内容,而七层架构则是在三层架构基础上进一步细化和扩展的结构。

ADO.NET数据库连接机制解析

代码展示与实现

1、连接数据库

复制代码
       #region 连接数据库

    
         //1、创建连接字符串(告诉连接哪个服务器,账号密码是什么,查哪个数据表)
    
         //服务器:Data Source=ELSA/SQLS(本机服务器)
    
         //连接的数据库名称:Initial Catalog=charge_sys;
    
         //有的时候改为server=ELSA/SQLS;database=charge_sys;uid=sa;pwd=123456
    
         string constr = @"Data Source=ELSA\SQLS;Initial Catalog=charge_sys;User ID=sa;Password=123456";
    
         //2、创建连接对象
    
         using (SqlConnection conn = new SqlConnection(constr)) //相当于手动调dispose
    
         {
    
             //测试打开连接
    
             //3、打开连接
    
             conn.Open();
    
             Console.WriteLine("打开连接成功");
    
             //4、关闭连接
    
             //conn.dispose()/conn.close()
    
         }
    
    
    
    

2、向数据库插入一条数据

复制代码
 #region 向数据库中插入一条数据

    
         //1、连接字符串
    
         string constr = @"Data Source=ELSA\SQLS;Initial Catalog=charge_sys;User ID=sa;Password=123456";
    
         //2、创建连接对象
    
         using (SqlConnection con = new SqlConnection(constr))
    
         {
    
             //3、编写sql语句
    
             string sql = "Insert into User_Info values(12,12,'管理员','索隆',12)";
    
             //4、创建一个连接sql语句的对象(命令对象)Sqlcommand,创建的一定要释放,所以用using
    
             using (SqlCommand cmd = new SqlCommand(sql, con))  //参数表示连接语句为sql,连接的哪个对象指定con
    
             {
    
                 //5、打开连接 
    
                 con.Open();
    
                 //6、开始执行sql语句
    
                 int r = cmd.ExecuteNonQuery();
    
                 Console.WriteLine("成功插入了{0}行数据", r);
    
                 //cmd.ExecuteNonQuery()这个方法有一个返回值是int类型,表示执行insert,delete,update语句后,所影响的行数。
    
             }
    
         }
    
  
    
         #endregion
    
    
    
    

3、从数据库中删除一条数据

复制代码
  #region 从数据库中删除一条语句

    
         //1、连接字符串
    
         string constr = @"Data Source=ELSA\SQLS;User ID=sa;Password=123456;Initial Catalog=charge_sys;";
    
         //2、创建连接对象
    
         using (SqlConnection con = new SqlConnection(constr))
    
         {
    
             //3、sql语句
    
             string sql = "delete from User_Info where userID=12";
    
             //4、创建SQLCommand对象
    
             SqlCommand cmd = new SqlCommand(sql, con);
    
             //5、打开连接
    
             con.Open();
    
             //6、执行
    
             int r = cmd.ExecuteNonQuery();
    
             Console.WriteLine("成功删除{0}行数据", r);
    
         }
    
  
    
         #endregion
    
    
    
    

4、从数据库中修改一条数据

复制代码
         #region 从数据库中修改一条数据

    
         //1、连接字符串
    
         string constr = @"Data Source=ELSA\SQLS;User ID=sa; Password=123456;Initial Catalog=charge_sys";
    
         //2、创建连接对象
    
         using (SqlConnection con = new SqlConnection(constr))
    
         {
    
             //3、sql语句
    
             string sql = "update User_Info set userID=12,PWD=12 where userID=11";
    
             //4、创建SQLCommand对象
    
             using (SqlCommand cmd = new SqlCommand(sql, con))
    
             {
    
                 //5、打开连接
    
                 con.Open();
    
                 //6、执行
    
                 int r = cmd.ExecuteNonQuery();
    
                 Console.WriteLine("已成功修改{0}行数据", r);
    
             }
    
  
    
         }
    
    
    
    

5、查询出表的记录条数

复制代码
         #region 查询出表中的记录条数

    
         string constr = @"Data Source=ELSA\SQLS;User ID=sa;Password=123456;Initial Catalog=charge_sys";
    
         using (SqlConnection con = new SqlConnection(constr))
    
         {
    
             string sql = "select count(*) from User_Info";
    
             using (SqlCommand cmd = new SqlCommand(sql, con))                
    
             {
    
                 con.Open();
    
                 Object count = Convert.ToInt32(cmd.ExecuteScalar());  
    
                 Console.WriteLine("User_Info表中共有{0}行数据",count);
    
                 Console.Read();
    
             }
    
         }
    
         #endregion
    
    
    
    

6、获取多行数据

复制代码
  static void Main(string[] args)  //但凡创建对象都在using里创建,这样我们就不用手动释放了。

    
     {
    
         //1、连接字符串
    
         string constr = @"Data Source =ELSA\SQLS;User ID=sa;Password=123456;Initial Catalog=charge_sys";
    
         //2、建立连接对象
    
         using (SqlConnection con = new SqlConnection(constr))
    
         {
    
             //3、sql语句
    
             string sql = "select * from User_Info";
    
             //4、建立命令对象
    
             using (SqlCommand cmd = new SqlCommand(sql, con))
    
             {    //5、打开数据库
    
                 con.Open();
    
                 //6、读取数据
    
                 using (SqlDataReader reader = cmd.ExecuteReader())
    
                 {
    
                    //通过reader对象一条一条获取数据
    
                    //1、在获取数据之前,先判断本次执行查询后,是否查询到了数据
    
                    if(reader.HasRows)  //如果有数据,则为true,否则为false
    
                     {
    
                         //2、如果有数据,那么接下来就要一条一条获取数据
    
                         while (reader.Read())
    
                         {
    
                             //获取当前reader指向的数据
    
                             //reader.FieldCount可以获取当前查询语句查询出的列的个数
    
                             for (int i = 0; i < reader.FieldCount; i++)
    
                             {
    
                                 //通过reader[]索引器可以使用列名来获取列的值
    
                                 Console.Write(reader[i]+"|"); 
    
                             }
    
                             Console.WriteLine();
    
                         }
    
                     }
    
                    else
    
                     {
    
                         Console.WriteLine("没有查到任何数据!");
    
                     }
    
                 }
    
             }          
    
         }
    
         Console.Read();            
    
     }
    
    
    
    

全部评论 (0)

还没有任何评论哟~