zoukankan      html  css  js  c++  java
  • C#基础之使用DataSet与Datatable更新数据库的三种实现方法

     一、自动生成命令的条件 CommandBuilder 方法

    (1)

                //(1)构造连接字符串:如果integrated security=true表示可以在不知道数据库用户名和密码的情况下时,依然可以连接数据库,如果integrated security=false,或者不写,表示一定要输入正确的数据库登录名和密码。sspi ,相当于 True,建议用这个代替 True。
                string connSQL = @"data source=;initial catalog=;persist security info=True;user id=;password=;MultipleActiveResultSets=True";
    
    
                //(3)打开到数据库的连接 :SqlConnection表示一个到 SQL Server 数据库的打开的连接
                using (SqlConnection conn = new SqlConnection(connSQL))
                { 
                    SqlDataAdapter adapter = new SqlDataAdapter(
    "SELECT * FROM  MES_aaaa", conn);
                    //生成命令。
                    SqlCommandBuilder builder = new SqlCommandBuilder(adapter); 
                    //  创建dataset示例
                    DataSet ds = new DataSet();
    
                    // 打开连接
                    conn.Open();
                    //填充
                    adapter.Fill(ds, "MES_aaaa");
    
                    //可以对获取到的数据进行操作。
                    DataTable table = new DataTable("MES_aaaa");
                    //获取数据放到DataTable
                    table = ds.Tables["MES_aaaa"];
    
    
                    foreach (DataRow dr in table.Rows)   ///遍历所有的行
                        foreach (DataColumn dc in table.Columns)   //遍历所有的列
                            Console.WriteLine("修改之前  :{0},   {1},   {2}", table.TableName, dc.ColumnName, dr[dc]);   //表名,列名,单元格数据
    
                    
               //     Console.ReadKey();
     
    //在dataset中修改值,
                    ds.Tables["MES_aaaa"].Rows[0]["a"] = "飞刀大哥";
    //如果有错,返回修改
                    if (ds.HasErrors)
                    {
                        ds.RejectChanges();
                    
                    }
    
    
    
                  //  Console.ReadKey();
                    //修改,自动生成修改sql命令
                    //ds.Tables["MES_aaaa"]
                    adapter.Update(ds, "MES_aaaa");
    
                   
                    conn.Close();
                     
    
                }
            

     这中适合于简单表,复杂表结构最好还是老老实实写sql命令。

    注意这里恢复是在 DataSet中所有表以及表中DataRow中的数据,也就是在此交次操作的数据全部恢复。如果我们只需要恢复部分内容,我们可以使用 DataTable或DataRow的RejectChanges()。

    (2)

  • 相关阅读:
    nginx配置
    线程与进程的区别:
    java面试题1
    递归的定义和优缺点
    使用jedis连接redis可能会出现的问题及解决方案
    Linux上安装Redis
    Linux 权限管理
    Maven
    网址备份
    反射
  • 原文地址:https://www.cnblogs.com/anjingdian/p/11129544.html
Copyright © 2011-2022 走看看