#region 下载时重构insert(数据带null处理)
public void DownDataInsert(DataTable _dt, string TableName,DBHelper dbhelper)
{
List<string> _List = new List<string>();
try
{
if (_dt == null)
{
throw new Exception("datatable不可为空!");
}
if (string.IsNullOrEmpty(TableName))
{
throw new Exception("表名不可为空!");
} for (int i = ; i < _dt.Rows.Count; i++)
{
string sqlstring = string.Empty;
string sqlString = "insert into " + TableName + " ({0}) VALUES ({1})";
string Names = string.Empty;
string values = string.Empty;
foreach (DataColumn c in _dt.Columns)
{
if (_dt.Rows[i][c.ColumnName] != null && !string.IsNullOrEmpty(_dt.Rows[i][c.ColumnName].ToString()))
{
Names += (string.IsNullOrEmpty(Names) ? "" : ",") + c.ColumnName;
if (IsType(c.DataType, "System.Nullable`1[System.Int16]") ||
IsType(c.DataType, "System.Nullable`1[System.Int32]") ||
IsType(c.DataType, "System.Nullable`1[System.Int64]") ||
IsType(c.DataType, "System.Nullable`1[System.Double]") ||
IsType(c.DataType, "System.Nullable`1[System.Decimal]") ||
c.DataType == typeof(System.Int16) ||
c.DataType == typeof(System.Int32) ||
c.DataType == typeof(System.Int64) ||
c.DataType == typeof(System.Double) ||
c.DataType == typeof(System.Decimal))
{
values += (string.IsNullOrEmpty(values) ? "" : ",") + _dt.Rows[i][c.ColumnName].ToString();
} if (IsType(c.DataType, "System.Nullable`1[System.DateTime]") ||
c.DataType == typeof(System.DateTime))
{
values += (string.IsNullOrEmpty(values) ? "" : ",") + "DateTime('" + _dt.Rows[i][c.ColumnName].ToString() + "')";
}
if (IsType(c.DataType, "System.String") || c.DataType == typeof(System.String))
{
values += (string.IsNullOrEmpty(values) ? "" : ",") + "'" + _dt.Rows[i][c.ColumnName].ToString() + "'";
}
}
}
if (!string.IsNullOrEmpty(Names) && !string.IsNullOrEmpty(values))
{
sqlstring = string.Format(sqlString, Names, values);
_List.Add(sqlstring);
}
}
dbhelper.ExecuteSqlTran(_List);
}
catch (Exception ex)
{
throw ex;
}
finally
{
_List = null;
}
}
#endregion #region 比较两个datatable,值不一样的相应的修改下载处理
public void CompareToDataTable(DataTable SourTable, DataTable TargetTable, string TableName)
{
string SelectString = string.Empty;
List<string> _list = new List<string>();
DataTable dtInsert = null;
DataTable drUpdate = null;
try
{
dtInsert = SourTable.Clone();
drUpdate = SourTable.Clone();
foreach (DataRow dr in SourTable.Rows)
{
if (TableName == "t_sellworker")
{
SelectString = "serverpartcode='" + dr["serverpartcode"].ToString() + "' and sellworkercode='" + dr["sellworkercode"].ToString() + "'";
}
else if (TableName == "t_salespromote")
{
SelectString = "salespromote_id=" + dr["salespromote_id"].ToString() + "";
// SelectString = "salespromote_startdate='" + dr["salespromote_startdate"].ToString() + "' and salespromote_enddate='" + dr["salespromote_enddate"].ToString() + "' " +
// " and salespromote_type='" + dr["salespromote_type"].ToString() + "' and salespromote_name='" + dr["salespromote_name"].ToString() + "' and commodity_code='" + dr["commodity_code"].ToString() + "'";
}
else if (TableName == "t_commodityex")
{
SelectString = "commodity_code='" + dr["commodity_code"].ToString() + "' and commodity_barcode='" + dr["commodity_barcode"].ToString() + "' "; // and serverpartshop_id=" + dr["serverpartshop_id"].ToString() + "
}
DataRow[] dr2 = TargetTable.Select(SelectString);
if (dr2 != null && dr2.Length > )
{
bool flag = false;
foreach (DataRow dr3 in dr2)
{
foreach (DataColumn c in SourTable.Columns)
{
if (dr3[c.ColumnName] != null && dr[c.ColumnName] != null && dr3[c.ColumnName].ToString() != dr[c.ColumnName].ToString())
{
flag = true;
break;
}
}
}
if (flag)
{
drUpdate.Rows.Add(dr.ItemArray);
}
}
else
{
dtInsert.Rows.Add(dr.ItemArray); //添加数据行
}
} if (drUpdate != null && drUpdate.Rows.Count > )
{
if(TableName=="t_sellworker")
{
UpdateData(drUpdate, "t_sellworker", new string[] { "serverpartcode", "sellworkercode" }, TargetDb);
}
else if (TableName == "t_salespromote")
{
UpdateData(drUpdate, "t_salespromote", new string[] { "salespromote_startdate", "salespromote_enddate", "salespromote_type", "salespromote_name", "commodity_code"}, TargetDb);
}
else if (TableName == "t_commodityex")
{
UpdateData(drUpdate, "t_commodityex", new string[] { "serverpartcode", "commodity_barcode", "serverpartshop_id" }, TargetDb);
}
MessageBox.Show("更新成功!");
}
if (dtInsert != null && dtInsert.Rows.Count > )
{
DownDataInsert(dtInsert, TableName, TargetDb);//插入
MessageBox.Show("下载成功!");
} }
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
dtInsert = null;
drUpdate = null;
}
}
#endregion #region 下载时重构update语句(处理数据空的情况)
public void UpdateData(DataTable table, string TableName, string[] keys,DBHelper dbhelper)
{
List<string> _List = null;
Dictionary<string, string> keyList = null;
try
{
if (_List == null)
{
_List = new List<string>();
}
else
{
_List.Clear();
} if (table == null)
{
throw new Exception("行不可为空!");
}
if (string.IsNullOrEmpty(TableName))
{
throw new Exception("表名不可为空!");
}
for (int i = ; i < table.Rows.Count; i++)
{
if (keyList == null)
{
keyList = new Dictionary<string, string>();
}
else
{
keyList.Clear();
}
string sqlstring = string.Empty;
string sqlString = "Update " + TableName + " set {0} where {1}";
string values = string.Empty;
foreach (DataColumn c in table.Columns)
{
if (table.Rows[i][c.ColumnName] != null && !string.IsNullOrEmpty(table.Rows[i][c.ColumnName].ToString()))
{
if (IsType(c.DataType, "System.Nullable`1[System.Int16]") ||
IsType(c.DataType, "System.Nullable`1[System.Int32]") ||
IsType(c.DataType, "System.Nullable`1[System.Int64]") ||
IsType(c.DataType, "System.Nullable`1[System.Double]") ||
IsType(c.DataType, "System.Nullable`1[System.Decimal]") ||
c.DataType == typeof(System.Int16) ||
c.DataType == typeof(System.Int32) ||
c.DataType == typeof(System.Int64) ||
c.DataType == typeof(System.Double) ||
c.DataType == typeof(System.Decimal))
{
values += ((string.IsNullOrEmpty(values) ? "" : ",") + c.ColumnName + "=" + table.Rows[i][c.ColumnName].ToString());
if (keys.Contains(c.ColumnName.ToUpper()) || keys.Contains(c.ColumnName.ToLower()))
{
keyList.Add(c.ColumnName, table.Rows[i][c.ColumnName].ToString());
}
} if (IsType(c.DataType, "System.Nullable`1[System.DateTime]") ||
c.DataType == typeof(System.DateTime))
{
values += ((string.IsNullOrEmpty(values) ? "" : ",") + c.ColumnName + "=" + "DateTime('" + table.Rows[i][c.ColumnName].ToString() + "')");
if (keys.Contains(c.ColumnName.ToUpper()) || keys.Contains(c.ColumnName.ToLower()))
{
keyList.Add(c.ColumnName, "DateTime('" + table.Rows[i][c.ColumnName].ToString() + "')");
}
}
if (IsType(c.DataType, "System.String") || c.DataType == typeof(System.String))
{
values += (string.IsNullOrEmpty(values) ? "" : ",") + c.ColumnName + "=" + "'" + table.Rows[i][c.ColumnName].ToString() + "'";
if (keys.Contains(c.ColumnName.ToUpper()) || keys.Contains(c.ColumnName.ToLower()))
{
keyList.Add(c.ColumnName, "'" + table.Rows[i][c.ColumnName].ToString() + "'");
}
}
}
}
if (!string.IsNullOrEmpty(values) && keyList != null && keyList.Count == keys.Length)
{
string strKeys = string.Empty;
foreach (KeyValuePair<string, string> kvp in keyList)
{
strKeys += ((string.IsNullOrEmpty(strKeys) ? "" : " AND ") + kvp.Key + " = " + kvp.Value);
} if (!string.IsNullOrEmpty(strKeys))
{
sqlstring = string.Format(sqlString, values, strKeys);
_List.Add(sqlstring);
} }
}
dbhelper.ExecuteSqlTran(_List);
}
catch (Exception ex)
{
throw ex;
}
finally
{
_List = null;
keyList = null;
}
}
#endregion
#region 上传时重构目标数据表insert(数据中带null的处理)
public void InsertTableData(DataTable dt, string TableName, DBHelper dbhelper)
{
try
{
List<string> _List = new List<string>();
if (dt == null)
{
throw new Exception("datatable不可为空!");
}
if (string.IsNullOrEmpty(TableName))
{
throw new Exception("表名不可为空!");
} for (int i = ; i < dt.Rows.Count; i++)
{
string sqlstring = string.Empty;
string sqlString = "insert into " + TableName + " ({0}) VALUES ({1})";
string Names = string.Empty;
string values = string.Empty;
foreach (DataColumn c in dt.Columns)
{
if (dt.Rows[i][c.ColumnName] != null && !string.IsNullOrEmpty(dt.Rows[i][c.ColumnName].ToString()))
{
Names += (string.IsNullOrEmpty(Names) ? "" : ",") + c.ColumnName;
if (IsType(c.DataType, "System.Nullable`1[System.Int16]") ||
IsType(c.DataType, "System.Nullable`1[System.Int32]") ||
IsType(c.DataType, "System.Nullable`1[System.Int64]") ||
IsType(c.DataType, "System.Nullable`1[System.Double]") ||
IsType(c.DataType, "System.Nullable`1[System.Decimal]") ||
c.DataType == typeof(System.Int16) ||
c.DataType == typeof(System.Int32) ||
c.DataType == typeof(System.Int64) ||
c.DataType == typeof(System.Double) ||
c.DataType == typeof(System.Decimal))
{
values += (string.IsNullOrEmpty(values) ? "" : ",") + dt.Rows[i][c.ColumnName].ToString();
} if (IsType(c.DataType, "System.Nullable`1[System.DateTime]") ||
c.DataType == typeof(System.DateTime))
{
values += (string.IsNullOrEmpty(values) ? "" : ",") + "DateTime('" + dt.Rows[i][c.ColumnName].ToString() + "')";
}
if (IsType(c.DataType, "System.String") || c.DataType == typeof(System.String))
{
values += (string.IsNullOrEmpty(values) ? "" : ",") + "'" + dt.Rows[i][c.ColumnName].ToString() + "'";
}
}
}
if (!string.IsNullOrEmpty(Names) && !string.IsNullOrEmpty(values))
{
sqlstring = string.Format(sqlString, Names, values);
_List.Add(sqlstring);
}
}
dbhelper.ExecuteSqlTran(_List);
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
 DBHelper SourceDb = new DBHelper("192.168.11.197", "pos1101", "dba", "sql");//源数据库
DBHelper TargetDb = new DBHelper("127.0.0.1", "pos012", "dba", "sql"); //目标
public class DBHelper
{
#region 构造函数
public DBHelper(string ConnStr)
{
connstring = ConnStr;
} public DBHelper(string Host, string Server, string UserId, string Password)
{
connstring = "host=" + Host + ";server=" + Server + ";userid=" + UserId + ";password=" + Password + ";";
} public DBHelper()
{ }
#endregion #region 属性信息
private string connstring = null;
public string ConnStr
{
set
{
connstring = value;
}
get
{
return connstring;
}
}
#endregion public DataSet QueryOdbc(string SqlString)
{
using (SAConnection conn = new SAConnection(connstring))
{
SACommand cmd = new SACommand(SqlString, conn);
try
{
conn.Open();
SADataAdapter adp = new SADataAdapter(cmd);
DataSet ds = new DataSet();
adp.Fill(ds);
conn.Close();
return ds;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
} /// <summary>
/// 保存数据
/// </summary>
/// <param name="SQLStringList"></param>
public void ExecuteSqlTran(List<string> SQLStringList)
{
using (SAConnection conn = new SAConnection(connstring))
{
conn.Open();
SACommand cmd = new SACommand
{
Connection = conn
};
SATransaction tx = conn.BeginTransaction();
cmd.Transaction = tx;
try
{
for (int i = ; i < SQLStringList.Count; i++)
{
string strsql = SQLStringList[i].ToString();
if (strsql.Trim().Length > )
{
cmd.CommandText = strsql;
cmd.ExecuteNonQuery();
}
}
tx.Commit();
}
catch (Exception ex)
{
tx.Rollback();
throw new Exception(ex.Message);
}
finally
{
conn.Close();
}
}
} /// <summary>
/// 保存数据
/// </summary>
/// <param name="SQLStringList"></param>
public void ExecuteSqlTran(string SQLString)
{
using (SAConnection conn = new SAConnection(connstring))
{
conn.Open();
SACommand cmd = new SACommand
{
Connection = conn
};
SATransaction tx = conn.BeginTransaction();
cmd.Transaction = tx;
try
{
if (SQLString.Trim().Length > )
{
cmd.CommandText = SQLString;
cmd.ExecuteNonQuery();
}
tx.Commit();
}
catch (Exception E)
{
tx.Rollback();
throw new Exception(E.Message);
}
finally
{
conn.Close();
}
}
} /// <summary>
/// 获取最大主键ID
/// </summary>
/// <param name="SqlString"></param>
/// <returns></returns>
public int OdbcGetMaxPKID(string SqlString)
{
using (SAConnection conn = new SAConnection(connstring))
{
SACommand cmd = new SACommand(SqlString, conn);
try
{
conn.Open();
int max_id = cmd.ExecuteScalar().ToString().Equals("") ? : int.Parse(cmd.ExecuteScalar().ToString());
conn.Close();
return max_id;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
} ///// <summary>
///// 测试连接
///// </summary>
//public static void TestConn()
//{
// using (SAConnection Conn = new SAConnection(connstring))
// {
// Conn.Open();
// SACommand cmd = new SACommand();
// cmd.Connection = Conn;
// Conn.Close();
// }
//}
}

dbhelper类

重构insert update 比较两个datatbale的更多相关文章

  1. PHP5: mysqli 插入, 查询, 更新和删除 Insert Update Delete Using mysqli (CRUD)

    原文: PHP5: mysqli 插入, 查询, 更新和删除  Insert Update Delete Using mysqli (CRUD) PHP 5 及以上版本建议使用以下方式连接 MySQL ...

  2. 《oracle每天一练》Merge Into 语句代替Insert/Update在Oracle中的应用实战

    转载自窃破天道 动机: 想在Oracle中用一条SQL语句直接进行Insert/Update的操作. 说明: 在进行SQL语句编写时,我们经常会遇到大量的同时进行Insert/Update的语句 ,也 ...

  3. 使用Merge Into 语句实现 Insert/Update

    网址: http://www.eygle.com/digest/2009/01/merge_into_insertupdate.html 动机: 想在Oracle中用一条SQL语句直接进行Insert ...

  4. Merge Into 语句代替Insert/Update在Oracle中的应用实战

    动机: 想在Oracle中用一条SQL语句直接进行Insert/Update的操作. 说明: 在进行SQL语句编写时,我们经常会遇到大量的同时进行Insert/Update的语句 ,也就是说当存在记录 ...

  5. Oracle Merge Into Insert/Update

    出自:http://blog.csdn.net/yuzhic/article/details/1896878 动机: 想在Oracle中用一条SQL语句直接进行Insert/Update的操作. 说明 ...

  6. mysql数据恢复 insert\update\delete 工具MyFlash

    一.简介MyFlash是由美团点评公司技术工程部开发维护的一个回滚DML操作的工具.该工具通过解析v4版本的binlog,完成回滚操作.相对已有的回滚工具,其增加了更多的过滤选项,让回滚更加容易. 该 ...

  7. LINQ体验(9)——LINQ to SQL语句之Insert/Update/Delete操作

    我们继续讲解LINQ to SQL语句,这篇我们来讨论Insert/Update/Delete操作.这个在我们的程序中最为常用了.我们直接看例子. Insert/Update/Delete操作 插入( ...

  8. 关于MyBatis mapper的insert, update, delete返回值

    这里做了比较清晰的解释: http://mybatis.github.io/mybatis-3/java-api.html SqlSession As mentioned above, the Sql ...

  9. mysql 事务是专门用来管理insert,update,delete语句的,和select语句一点不相干

    1.mysql 事务是专门用来管理insert,update,delete语句的,和select语句一点不相干 2.一般来说,事务是必须满足4个条件(ACID): Atomicity(原子性).Con ...

随机推荐

  1. Raspberry Pi - 调整你的SD卡分割区的大小

    在使用Win32DiskImager为一张空白的SD卡刷入新的Rasbian系统后,卡上的可用剩余空间并不大, 本人有一张8G的SD卡,但是刷入4.1的Rasbian后,用df -h查看,根目录下的空 ...

  2. django-debug-toolbar 使用

    https://pypi.org/project/django-debug-toolbar/ https://django-debug-toolbar.readthedocs.io/en/latest ...

  3. Win10平台下通过VMware虚拟机安装Win7、Ubuntu、Mac

    1.安装VMware14.1.1 下载地址:https://download.csdn.net/download/jasonczy/10611423 产品秘钥: CG54H-D8D0H-H8DHY-C ...

  4. Unity WebGL 窗口自适应

    unity 打包好WebGL后,用文本编辑器编辑打包生成的 index.html 文件 在生成的html里面修改代码     <script type="text/javascript ...

  5. 【Codeforces Round #420 (Div. 2) B】Okabe and Banana Trees

    [题目链接]:http://codeforces.com/contest/821/problem/B [题意] 当(x,y)这个坐标中,x和y都为整数的时候; 这个坐标上会有x+y根香蕉; 然后给你一 ...

  6. Java的几个有用小Util函数(日期处理和http)

    /**      * 依据日期返回当前日期是一年的第几天      * @param date      * @return      */     public static int orderDa ...

  7. 如何下载最新版的 Adobe Flash Player

    如何下载最新版的 Adobe Flash Player 中国访客用代理访问下面的链接,否则会自动跳转到 https://www.flash.cn/ 当我们从 https://get.adobe.com ...

  8. Announcing Zuul: Edge Service in the Cloud--转

    原文地址:http://techblog.netflix.com/2013/06/announcing-zuul-edge-service-in-cloud.html   The Netflix st ...

  9. codeforces 589A Email Aliases(map)

    Description Polycarp has quite recently learned about email aliases. Of course, he used to suspect t ...

  10. 洛谷 P2690 接苹果

    P2690 接苹果 题目背景 USACO 题目描述 很少有人知道奶牛爱吃苹果.农夫约翰的农场上有两棵苹果树(编号为1和2), 每一棵树上都长满了苹果.奶牛贝茜无法摘下树上的苹果,所以她只能等待苹果 从 ...