数据库常用操作
批量新增数据
/// <summary>
/// 数据库对应表
/// </summary>
/// <returns></returns> //复制表结构
private static DataTable GetTable()
{
DataTable dt = new DataTable();
dt.Columns.Add("MF000", typeof(decimal));
dt.Columns.Add("MF001", typeof(string));
dt.Columns.Add("MF002", typeof(string));
dt.Columns.Add("MF003", typeof(string));
return dt;
}
#endregion
/// <summary>
/// 批量插入数据
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
bool IsRead;
public bool AddModels(List<TransBody> users)
{
DataTable dtusers = GetTable ();
foreach (TransBody model in users)
{
DataRow dr_user = dtusers.NewRow();
dr_user["MF000"] = model.MF000;
dr_user["MF001"] = model.MF001.Trim();
dr_user["MF002"] = model.MF002.Trim();
dr_user["MF003"] = model.MF003.Trim();
dtusers.Rows.Add(dr_user);
}
if (dtusers != null && dtusers.Rows.Count > 0)
{
using (conn =Getconn())
{
conn.Open();
using (SqlTransaction trans = conn.BeginTransaction())
{
try
{
using (SqlBulkCopy bulk = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, trans))
{
bulk.BatchSize = dtusers.Rows.Count;
bulk.BulkCopyTimeout = 60;
bulk.DestinationTableName = "SVRYMF";
bulk.WriteToServer(dtusers);
trans.Commit();
IsRead = true;
}
}
catch
{
IsRead = false;
trans.Rollback();
}
}
}
}
return IsRead;
}
扩展阅读:
using 的用法:
using 用法一: 引入命名空间,相当于java中的import ;
用法二:定义一个范围,在范围结束时处理对象,当事件结束时会自动调用该类的dispose 来释放该类(上述范例应用此类)
用法三:别名的应用 using+别名 简便用法,包含了详细命名空间信息的具体的类型;
例如:using class1=ConsoleApplication1.myclass; using class2=ConsoleApplication1.myclass;
SqlTransaction 的用法:
定义为:要在sql数据库中处理的T-Sql 事务
对应常用三个方法:Save,Commit ,Rollback;
事务提交过程中出现任何错误,都会调用Rollback 回滚操作
其中save 是创建保护点,以便于当事件执行失败时回滚到该处,而不是回滚到起点
SqlBulkCopy 的用法:
DestinationTableName:服务器上面目标表的名称
BulkCopyTimeout:超时之前操作完成所允许的秒数
BatchSize :每一批次中的行数,在每一批结束时,将该批次中的行发送到服务器;
不过如果是一般的插入,用insert into 更为便捷
常用公共方法:
Close() ; 关闭SqlBulkCopy实例
WriteToServer();将所有行从数据源复制到SqlBulkCopy对象的DestinationTableName属性指定的目标表中
事务:
是并发控制的单位,是用户定义的操作序列,这些操作,要么做要么不做,是个不可分割的单元,通过事务,sqlserver能将逻辑相关的一组操作绑定在一起,以便服务器保持数据完整性
事务的三种提交模式:
自动提交 每条单独的语句都是一个事务,每个语句后都隐含一个commit;
显式提交:以Begin TransAction 显式开始,以commit ,rollback 显式结束《该实例中就是用显式提交》、
隐性提交:在前一个事务完成时,新事务隐式启动,每个事务仍以commit或collback显式结束
事务的特性: 原子性(不可分割),一致性(事务的执行结果必须是使数据库由一个状态更改为另外一个状态)、隔离性(一个事务的执行不能被其他事务干扰)
持续性以及永久性: 事务提交 对于数据库中的数据是永久性的