`
gstarwd
  • 浏览: 1488348 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

通过DataSet更新、插入数据库

阅读更多

 

 
方法一:
 //与SQL Server的连接字符串设置
 private string _connString;
 private string _strSql;
 private SqlCommandBuilder sqlCmdBuilder;
 private DataSet ds = new DataSet();
 private SqlDataAdapter da;
 public sqlAccess(string connString,string strSql)
 {
      this._connString=connString;
 }
 private SqlConnection GetConn()
 {
      try
      {
           SqlConnection Connection = new SqlConnection(this._connString);
           Connection.Open();
           return Connection;
      }
      catch (Exception ex)
      {
           MessageBox.Show(ex.Message,"数据库连接失败");
           throw;
      }
 }
 //根据输入的SQL语句检索数据库数据
 public DataSet SelectDb(string strSql,string strTableName)
 {
      try
      {
          this._strSql = strSql;
          this.da = new SqlDataAdapter(this._strSql,this.GetConn());
          this.ds.Clear();
          this.da.Fill(ds,strTableName);
          return ds;//返回填充了数据的DataSet,其中数据表以strTableName给出的字符串命名
      }
      catch (Exception ex)
      {
           MessageBox.Show(ex.Message,"数据库操作失败");
           throw;
      }
 }
 //数据库数据更新(传DataSet和DataTable的对象)
 public DataSet UpdateDs(DataSet changedDs,string tableName)
 {
      try
      {
          this.da = new SqlDataAdapter(this._strSql,this.GetConn());
          this.sqlCmdBuilder = new SqlCommandBuilder(da);
          this.da.Update(changedDs,tableName);
          changedDs.AcceptChanges();
          return changedDs;//返回更新了的数据库表
      }
      catch (Exception ex)
      {
           MessageBox.Show(ex.Message,"数据库更新失败");
           throw;
      }
}
 
 
1. GetConn方法创建一个数据库连接,返回SqlConnection。
2.使用的select命令中必须包含主键,这点大家都知道的!
3. this.da.Fill(ds,strTableName) 填充数据集
4.构造CommandBuilder对象时,将DataAdapter对象作为构造函数参数传入:
  this.sqlCmdBuilder = new SqlCommandBuilder(da);
5. 在调用UpdateDs()更新数据库前,请检查changedDs是否已经被更新过,用changedDs.[tableName] GetChanges() != null;
6.用this.da.Update(changedDs,tableName)方法更新数据,然后调用changedDs.AcceptChanges()才能真正的更新数据库,调用 changedDs.RejectChanges() 取消更新。

方法二:
该方法可能存在性能问题
            int tab1Count = ds.Tables["ruledetail_setup"].Rows.Count;
            for (int i = 0; i < tab1Count; i++)
            {
                string sql = "select count(*) from ruledetail_setup where type = " + type + " and ID = ";
                    sql += ds.Tables["ruledetail_setup"].Rows[i]["ID"];
                if (Convert.ToInt32(SqlHelper.ExecuteScalar(CommandType.Text, sql, null)) != 0)
                {
                    string sqlUpdata = "updata ruledetail_setup set errorLimit={0},scoreInterval={1},detailRule={2},gradeTime={3} ";
                    sqlUpdata += "where type = " + type + " and ID = " + ds.Tables["ruledetail_setup"].Rows[i]["ID"];
                    String.Format(sqlUpdata,
                        ds.Tables["ruledetail_setup"].Rows[i]["errorLimit"],
                        ds.Tables["ruledetail_setup"].Rows[i]["scoreInterval"],
                        ds.Tables["ruledetail_setup"].Rows[i]["detailRule"],
                        ds.Tables["ruledetail_setup"].Rows[i]["gradeTime"]);
                    SqlHelper.ExecuteNonQuery(CommandType.Text, sqlUpdata, null);
                }
                else
                {
                    string sqlIns = "insert into ruledetail_setup (Type,ID,errorLimit,scoreInterval,detailRule,gradeTime) ";
                        sqlIns += "values ("+type+",{0},{1},{2},{3},{4})";
                    String.Format(sqlIns,
                        ds.Tables["ruledetail_setup"].Rows[i]["ID"],
                        ds.Tables["ruledetail_setup"].Rows[i]["errorLimit"],
                        ds.Tables["ruledetail_setup"].Rows[i]["scoreInterval"],
                        ds.Tables["ruledetail_setup"].Rows[i]["detailRule"],
                        ds.Tables["ruledetail_setup"].Rows[i]["gradeTime"]);
                    SqlHelper.ExecuteNonQuery(CommandType.Text, sqlIns, null);
                }
            }

分享到:
评论

相关推荐

    使用DataSet和DataAdapter插入关联数据

    在我使用这个方法开发程序的时候我发现使用DataSet和DataAdapter对象更新关系数据的方法有问题。如果你仅仅更新一个DataTable,那么为DataAdapter创建代码就没多大问题,但是如果你使用多于一个表,那些表之间有...

    python将数据插入数据库的代码分享

    python将数据插入数据库的方法: 首先读入数据并建立数据库连接; 然后创建数据库; 接着执行插入数据语句,迭代读取每行数据; 最后关闭数据库连接即可。 比如现在我们要将如下Excel数据表格插入到MySQL数据库...

    C# 数据表(Dataset)操作 合并 查询一箩筐(源码)(批量数据导入导出数据库)

    一个源码,包括10个例,说明数据表的合并,数据的不重复插入,以事务更新多个数据表以批量数据导入导出数据库 大大有益啊。。。。

    C#版Oracle数据库通用操作类

    C#版Oracle数据库通用操作类,包含了基础连接、执行基础语句、返回参数执行、dataset分页执行等简单oracle命令执行及哈稀表自动插入数据库等高级任务执行等。

    C# 编程连接oracle数据库方法

    C# 编程连接oracle数据库方法 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using ...

    C# Access 大数据量 批量 效率 快速 导入

    C#写的大数据量批量快速效率高校的导入。 反正不是一条一条的插入 是一个dataset一个的插入 不管是C#还是JAVA 都用的上

    数据库和ado知识

    获得刚刚插入数据库的自增id Sql注入攻击(避免方式?) 如何使用迭代生成树形菜单 单例模式(单例模式的创建) DataTable的使用 类SqlDataAdapter的使用(重点) 类SqlCommandBuilder的使用(注意:他必须操作的是有主键的...

    DBHelper数据库操作类(支持OleDb、MySQL、Oracle、SQL、SQLite).zip

    向数据库里插入图像格式的字段 执行一条计算查询结果语句,返回查询结果 执行查询语句,返回MySqlDataReader 执行查询语句,返回DataSet 执行SQL语句,返回影响的记录数 执行多条SQL语句,实现数据库事务。 执行带一...

    MysqlDLL,C#操作MYSQL数据库

     Update(DataRow[])//通过为 DataSet 中的指定数组中的每个已插入、已更新或已删除的行执行相应的 INSERT、UPDATE 或 DELETE 语句来更新数据库中的值  Update(DataSet)//通过为指定的 DataTable 中的每个已插入、...

    SQLServer_数据库操作库

    public int ExecuteSQL(string sql) //执行SQL语句(插入、更新、删除),并返回受影响的行数。 public DataTable DataTable(string sql) //执行SQL查询语句,查询结果以DataTable的形式返回。 public DataSet ...

    DBHelper方便连接数据库 DBHelper

    DataSet ds = new DataSet(); SqlCommand cmd = new SqlCommand(safeSql, Connection); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(ds); connection.Close(); connection.Dispose(); return ds....

    使用ado访问sql server数据库的实验报告

    4,插入一个新列 private void button1_Click(object sender, System.EventArgs e) { SqlConnection thisConnection=new SqlConnection("Data Source=LocalHost;Integrated Security=SSPI;Initial Catalog=...

    DataTable批量插入数据到SQL Server 2005

    在.net中内存表datatable用来暂时存储批量数据,然后用数据集dataset来批量更新数据库。一次更新批量插入。(C#+.net+SQL Server 2005)

    ASP.NET 数据库入门经典C#篇pdg

    本书要求读者对 ASP.NET 和 C# 有一些基本的认识,如果对操纵数据库没有任何经验也没有关系,作者将指导每个过程,包括将 ASP.NET 页面与数据库连接,研究各种读取、处理和更新数据的方法。接下来研究所有涉及侧重于...

    读取Excel中的数据,显示在DataGridView,并存入SQL Server数据库

    这是一个C# Form程序,实现见excel中的数据读到DataSet并显示到datagridview上,并存入sql server数据库

    非常实用c#操作Access数据库的例子(application)

    1.Access数据库的插入,更新,修改,查询; 2.带参数的sql语句的使用,而不是拼SQL; 3.使用DataReader的分页查询,而不是用嵌套的SQL语句来分页; 4.用事务同时执行多个SQL语句; 5.在插入数据的同时返回最新的ID值...

    Orcale数据库访问类

    只需要在web.config 配置数据库连接,然后调用oraclehelp 类,执行各种查询,插入,存贮过程等数据库操作例如: StringBuilder sql = new StringBuilder(); sql.AppendLine("select * from TABLENAME where "); sql....

    C# Oracle数据库操作类实例详解

    可执行超多常用的Oracle数据库操作,包含了基础数据库连接、关闭连接、输出记录集、执行Sql语句,返回带分页功能的dataset 、取表里字段的类型和长度等,同时还有哈稀表自动插入数据库等高级任务。需要特别指出的是...

    在线即时贴

    ADO.NET插入、删除、更新数据库表数据。ADO.NET开发基于Web的数据库应用系统的步骤。数据源控件连接数据库的方法。数据绑定的概念及进行数据绑定的方法。各种数据控件完成数据的编辑、排序、分页显示等任务。数据...

    DataSet library-开源

    数据集库是基于Java的库,它是内存中表形式的数据容器。 它具有固定的列数和不同的行数。 它通过可插入引擎从数据源读取和写入数据。 支持连接到SQL / JDBC数据库

Global site tag (gtag.js) - Google Analytics