using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.OleDb;
namespace CNAS_DBSync
{
public class BaseDAL
{
private static log4net.ILog log = log4net.LogManager.GetLogger("BaseDAL");
public void CreateConnectString(string strHost, string strName, string strUser, string strPwd)
{
SQLDB2Helper.createConnectString(strHost, strName, strUser, strPwd);
}
//获取所有表单名称
public DataTable GetTableNames(string strUser)
{
DataTable dt = new DataTable();
string strSql = string.Format("SELECT TABNAME FROM SYSCAT.TABLES Where TABSCHEMA = '{0}'",strUser);
try
{
dt= SQLDB2Helper.getDB2Table(strSql);
}
catch (Exception ex)
{
log.Error(ex.Message);
}
return dt;
}
///
/// 获取某表的表结构
///
///
///
public DataTable GetTableStruct(string strTableName)
{
DataTable dt = new DataTable();
string strSql = string.Format("SELECT * FROM {0} Where 1=0", strTableName);
try
{
dt = SQLDB2Helper.getDB2Table(strSql);
}
catch (Exception ex)
{
log.Error(ex.Message);
}
return dt;
}
///
/// 逐行批量插入数据
///
///
///
public int InsertCnasData(DataTable dt, List syncParamasInfos)
{
int iReturn = 0;
if (dt.Rows.Count <= 0) return 0;
try
{
//构建SQL语句
string strSql_part1 = "";
string strSql_part2 = "";
foreach (var item in syncParamasInfos)
{
strSql_part1 += item.TargetField + ",";
strSql_part2 += "?,";
}
string strSql = string.Format("insert into {0}({1}) values({2})",syncParamasInfos[0].TargetTable, strSql_part1.Substring(0, strSql_part1.Length - 1), strSql_part2.Substring(0, strSql_part2.Length - 1));
foreach (DataRow dr in dt.Rows)
{
OleDbParameter[] parameters = new OleDbParameter[syncParamasInfos.Count];
for (int i = 0; i < syncParamasInfos.Count; i++)
{
parameters[i] = new OleDbParameter(syncParamasInfos[i].TargetField, dr[syncParamasInfos[i].TargetField]);
}
//执行SQL语句
iReturn += SQLDB2Helper.ExequeryDB2Table(strSql, parameters);
}
}
catch (Exception ex)
{
//此处添加错误日志
log.Error(ex.Message);
}
return iReturn;
}
public bool LinkCnasTest()
{
return SQLDB2Helper.TestCnasLink();
}
}
}