要求做一个程序,将数据库newmsa中的表CptCapital中的数据选取部分字段值,导入到数据库hangyun中表ShipInfo_T中,并保证字段的一致性。
大致思路:
1、与newmsa建立连接,查询所需数据,保存到一张DataTable中
2、与hangyun建立连接,将DataTable中的数据导入到相应的字段中
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace 批量数据操作_北京到长江_
{
class Program
{
//配置连接字符串
public static string ConnString = @"Data Source=Q-PC\SQLEXPRESS;Integrated Security=SSPI;uid=sa;pwd=;Initial Catalog=hangyun";
public static string ConnString1 = @"Data Source=Q-PC\SQLEXPRESS;Integrated Security=SSPI;uid=sa;pwd=;Initial Catalog=newmsa";
static void Main(string[] args)
{
Program p = new Program();
p.batchInsertData_ShipInfo();//导入数据
Console.WriteLine("导入成功!");
Console.ReadLine();
}
//批量处理数据
public Boolean batchInsertData_ShipInfo()
{
DataTable dt = new DataTable();
//获取
string sql = "select Id,Textfield5,Name,capitaltypeid,Customerid,Numberfield1,Numberfield2,depreyear,deprerate,Isinner,manufacturer,Unitid,Textfield3,departmentid from CptCapital";
sql += " where departmentid='10' or departmentid='140' or departmentid='141' or departmentid='142' or departmentid='143' or departmentid='144'";
sql += " or departmentid='145' or departmentid='146' or departmentid='147' or departmentid='148' or departmentid='23' or departmentid='53' or departmentid='74'";
dt =GetTable(sql);
//导入
for (int i = 0; i < dt.Rows.Count; i++)
{
string strsql;
int year, month;
year = Convert.ToInt32(dt.Rows[i]["depreyear"]);
month = Convert.ToInt32(dt.Rows[i]["deprerate"]);
DateTime date = new DateTime(0);
date = date.AddYears(year);
date = date.AddMonths(month);
strsql = "insert into ShipInfo_T(ShipID,Shipnum,ShipName,ShipType,companyNum,HostPower,loadquota,Builddate,isexist,RegistryPort,SailArea,ShipOwner,SMCInstitution)values('";
strsql = strsql + dt.Rows[i]["Id"].ToString() + "','" + dt.Rows[i]["Textfield5"].ToString() + "','" + dt.Rows[i]["Name"].ToString() + "','";
strsql += dt.Rows[i]["capitaltypeid"].ToString() + "','" + dt.Rows[i]["Customerid"].ToString() + "','" + dt.Rows[i]["Numberfield1"].ToString() + "','";
strsql += Convert.ToInt32(dt.Rows[i]["Numberfield2"]) + "','" + date.ToString("yyyy-MM-dd") + "','" + dt.Rows[i]["Isinner"].ToString() + "','";
strsql += dt.Rows[i]["manufacturer"].ToString() + "','" + dt.Rows[i]["Unitid"].ToString() + "','" + dt.Rows[i]["Textfield3"].ToString() + "','" + dt.Rows[i]["departmentid"].ToString() + "')";
ExecuteInsertOrUpdateSql(strsql);
}
return true;
}
//从数据库中获得所需数据,并返回DataTable
public DataTable GetTable(string strSql)
{
SqlConnection conn = new SqlConnection(ConnString1);
conn.Open();
SqlDataAdapter da = new SqlDataAdapter(strSql, conn);
DataTable dt = new System.Data.DataTable();
try
{
da.Fill(dt);
return dt;
}
catch (Exception e)
{
throw new Exception("执行任务失败:" + e.Message + " " + strSql);
}
finally
{
conn.Close();
}
}
#region 执行添加,修改,删除的时候进行验证的方法
/// <summary>
/// 执行添加的时候进行验证的方法,返回结果的sql更新语句
/// </summary>
/// <param name="strSql">需要执行的sql语句</param>
/// 返回一个boolean型的值
public Boolean ExecuteInsertOrUpdateSql(string strSql)
{
SqlConnection conn = new SqlConnection(ConnString);
conn.Open();
SqlCommand cmd = new SqlCommand(strSql, conn);
try
{
int count = cmd.ExecuteNonQuery();
if (count > 0)
{
return true;
}
else
{
return false;
}
}
catch (Exception e)
{
throw new Exception("执行任务失败:" + e.Message + " " + strSql);
}
finally
{
conn.Close();
cmd.Dispose();
}
}
#endregion
}
}