方法一:
//与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对象更新关系数据的方法有问题。如果你仅仅更新一个DataTable,那么为DataAdapter创建代码就没多大问题,但是如果你使用多于一个表,那些表之间有...
python将数据插入数据库的方法: 首先读入数据并建立数据库连接; 然后创建数据库; 接着执行插入数据语句,迭代读取每行数据; 最后关闭数据库连接即可。 比如现在我们要将如下Excel数据表格插入到MySQL数据库...
一个源码,包括10个例,说明数据表的合并,数据的不重复插入,以事务更新多个数据表以批量数据导入导出数据库 大大有益啊。。。。
C#版Oracle数据库通用操作类,包含了基础连接、执行基础语句、返回参数执行、dataset分页执行等简单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#写的大数据量批量快速效率高校的导入。 反正不是一条一条的插入 是一个dataset一个的插入 不管是C#还是JAVA 都用的上
获得刚刚插入数据库的自增id Sql注入攻击(避免方式?) 如何使用迭代生成树形菜单 单例模式(单例模式的创建) DataTable的使用 类SqlDataAdapter的使用(重点) 类SqlCommandBuilder的使用(注意:他必须操作的是有主键的...
向数据库里插入图像格式的字段 执行一条计算查询结果语句,返回查询结果 执行查询语句,返回MySqlDataReader 执行查询语句,返回DataSet 执行SQL语句,返回影响的记录数 执行多条SQL语句,实现数据库事务。 执行带一...
Update(DataRow[])//通过为 DataSet 中的指定数组中的每个已插入、已更新或已删除的行执行相应的 INSERT、UPDATE 或 DELETE 语句来更新数据库中的值 Update(DataSet)//通过为指定的 DataTable 中的每个已插入、...
public int ExecuteSQL(string sql) //执行SQL语句(插入、更新、删除),并返回受影响的行数。 public DataTable DataTable(string sql) //执行SQL查询语句,查询结果以DataTable的形式返回。 public DataSet ...
DataSet ds = new DataSet(); SqlCommand cmd = new SqlCommand(safeSql, Connection); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(ds); connection.Close(); connection.Dispose(); return ds....
4,插入一个新列 private void button1_Click(object sender, System.EventArgs e) { SqlConnection thisConnection=new SqlConnection("Data Source=LocalHost;Integrated Security=SSPI;Initial Catalog=...
在.net中内存表datatable用来暂时存储批量数据,然后用数据集dataset来批量更新数据库。一次更新批量插入。(C#+.net+SQL Server 2005)
本书要求读者对 ASP.NET 和 C# 有一些基本的认识,如果对操纵数据库没有任何经验也没有关系,作者将指导每个过程,包括将 ASP.NET 页面与数据库连接,研究各种读取、处理和更新数据的方法。接下来研究所有涉及侧重于...
这是一个C# Form程序,实现见excel中的数据读到DataSet并显示到datagridview上,并存入sql server数据库
1.Access数据库的插入,更新,修改,查询; 2.带参数的sql语句的使用,而不是拼SQL; 3.使用DataReader的分页查询,而不是用嵌套的SQL语句来分页; 4.用事务同时执行多个SQL语句; 5.在插入数据的同时返回最新的ID值...
只需要在web.config 配置数据库连接,然后调用oraclehelp 类,执行各种查询,插入,存贮过程等数据库操作例如: StringBuilder sql = new StringBuilder(); sql.AppendLine("select * from TABLENAME where "); sql....
可执行超多常用的Oracle数据库操作,包含了基础数据库连接、关闭连接、输出记录集、执行Sql语句,返回带分页功能的dataset 、取表里字段的类型和长度等,同时还有哈稀表自动插入数据库等高级任务。需要特别指出的是...
ADO.NET插入、删除、更新数据库表数据。ADO.NET开发基于Web的数据库应用系统的步骤。数据源控件连接数据库的方法。数据绑定的概念及进行数据绑定的方法。各种数据控件完成数据的编辑、排序、分页显示等任务。数据...
数据集库是基于Java的库,它是内存中表形式的数据容器。 它具有固定的列数和不同的行数。 它通过可插入引擎从数据源读取和写入数据。 支持连接到SQL / JDBC数据库