`
gstarwd
  • 浏览: 1526864 次
  • 性别: 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中修改(增加_删除_修改)过的记录更新进数据库中

    更新DataSet中的记录到数据库中 在本文中,我们将讨论如何将修改(增加、删除、修改)过的记录从DataSet中更新到数据库中。 首先,让我们了解一下DataSet的基本概念。DataSet是一个内存中的数据存储器,它可以存储...

    操作无连接数据库dataset

    通常,这可以通过使用DataAdapter从数据库中填充DataSet。例如,你可以使用SqlCommand对象执行SQL查询,然后使用SqlDataAdapter的Fill方法将结果加载到DataSet中。在这个过程中,DataSet可以看作是数据库的一个本地...

    asp.net使用DataSet数据集插入表记录

    当数据库更新后,还需要调用`DataSet`的`AcceptChanges`方法,以清除所有的更改标记。这样可以确保下一次从数据库加载数据时,不会误认为数据已经发生了变化。 ```csharp dataSet.AcceptChanges(); ``` #### 小结 ...

    使用DataSet和DataAdapter插入关联数据

    通过`FillSchema`方法,我们可以为`DataSet`中的两个`DataTable`填充数据结构,确保它们与数据库表具有相同的结构,包括`IDENTITY`字段。 #### 3. 更新命令构建 接下来使用`OleDbCommandBuilder`来为两个`...

    C#使用DataSet Datatable更新数据库的三种实现方法

    在C#编程中,使用DataSet和DataTable来更新数据库是一种常见的操作。DataSet作为内存中的数据集,可以存储从数据库检索的数据,而DataTable则代表了数据库表的副本。在更新数据库时,有三种主要的方法:...

    VB.NET将图片插入数据库代码

    通过以上步骤,我们可以清晰地了解到如何在VB.NET中实现将图片插入数据库的操作。这不仅涉及到控件状态的管理,还包括数据库连接、数据更新等多个方面。希望这些详细的知识点能够帮助读者更好地理解和掌握这一技术。

    Silverlight数据库DataSet文档教程

    在这个方法中,我们可以执行数据库操作,如查询、插入等。 #### 四、实现细节 ##### 4.1 构建拓展方法 为了方便地从Silverlight客户端调用`ProcessRequest`方法,我们需要创建一个辅助类,并在其中定义拓展方法。...

    实验七使用DataSet访问数据库.docx

    实验七的目的是让学生掌握如何利用DataSet和DataAdapter来访问SQL Server数据库,进行基本的CRUD(创建、读取、更新、删除)操作。DataSet是.NET框架中的一个离线数据存储区域,它可以存储从数据库检索的数据,并...

    ASP.NET数据库网站设计教程(C#版)[孙士保]第11章 使用DataSet访问数据库.ppt

    DataSet与DataAdapter协同工作,允许开发者进行常规的数据库操作,如查询、插入、更新和删除数据。 1. **DataSet和DataAdapter与数据源的关系** 数据库连接通常通过DataAdapter类建立,该类负责从数据库检索数据并...

    C# 批量插入和更新数据

    6. **循环插入数据**:通过循环生成随机数据并将其添加到`DataSet`中,每300条数据执行一次`Update`操作以提交到数据库,并清空`DataSet`中的数据,以便继续下一轮的数据插入。 #### 三、批量更新数据 针对批量更新...

    C#数据表格控件的应用数据库插入删除更新将数据库的数据显示并且可以进行删除插入更新

    本教程将深入探讨如何利用C#中的数据表格控件,结合SQL数据库、Form界面元素如text标签和button按钮,实现数据库的插入、删除和更新操作。 首先,我们需要在Form上设计用户界面。创建一个新的Windows Forms项目,并...

    ADO.NET(创建,读取,更新)数据库

    更新数据库可以通过`DataSet`或`SqlCommand`对象来实现。 ##### (1)使用DataSet对象更新数据库 `DataSet`对象提供了`Update`方法来同步对数据所做的更改。 ```csharp using System.Data; using System.Data....

    将datagridview内容直接更新到ACCESS数据库中

    `OleDbDataAdapter`的`Update`方法负责将`DataSet`中的更改同步到数据库,实现数据的实时更新。 ```csharp private void button1_Click(object sender, EventArgs e) { dataAdapter.Update(ds); } ``` ### 关键...

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

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

    winform 使用SqlDataAdapter更新数据库源码

    总结来说,WinForm应用程序中使用SqlDataAdapter更新数据库涉及初始化DataAdapter、填充和更新DataSet,处理并发冲突,以及利用SqlCommandBuilder自动生成更新命令。理解并熟练运用这些知识点对于开发高效、健壮的...

    C# Excel导入数据库

    ##### 3.3 将 DataTable 数据插入数据库 在 `button2_Click` 方法中,我们遍历 `DataTable` 中的所有行,并调用 `insertToSql` 方法将每行数据插入到数据库中。 ```csharp private void button2_Click(object ...

    DataSet应用

    此外,`CommandBuilder`类可以自动生成用于更新、插入和删除数据的SQL命令。 五、性能考虑 虽然`DataSet`提供了离线操作数据的便利,但其内存消耗较大,不适合处理大量数据。对于大型数据集,推荐使用`DataReader`...

    asp.net之dataset深入学习

    同时,DataSet还支持数据的更新、插入和删除操作,通过DataAdapter的Update方法,可以将DataSet中的更改同步回数据库。 DataSet的强大之处在于它的缓存机制和数据绑定功能。由于数据在内存中,可以快速访问,尤其是...

    ASP.NET 数据插入与更新

    对于基础的数据库操作,如插入和更新,ADO.NET提供了必要的组件,如SqlConnection、SqlCommand、SqlDataAdapter和DataSet。首先,建立数据库连接(SqlConnection),然后创建SqlCommand对象来执行SQL命令,如INSERT ...

    C#连接数据库和插入、删除、更新数据库.pdf

    从提供的文件内容中,我们可以提炼出以下知识点,详细解释了C#语言如何连接数据库以及执行插入、删除、更新数据库的操作。 ### 连接数据库 1. **建立连接字符串**: 连接字符串通常包括提供者、数据源、初始目录...

Global site tag (gtag.js) - Google Analytics