前言
.net 连接mysql数据库方法
//同步mysql数据库
public void UpLoadMySqlDB(string TBName, DataTable dt, String companyNo)
{
#region 连接MySql
String connetStr = "Max Pool Size = 512;server=xxx.xxx.xxx.xxx;port=3308;user=root;password=xxx; database=xxx;Charset=utf8;";
SCommBB commBB = new SCommBB();
DV_ErrorDiaryBB errorDiaryBB = new DV_ErrorDiaryBB(commBB.Connection);
MySqlConnection mysqlconn = new MySqlConnection(connetStr);
try
{
mysqlconn.Open();//成功連接
}
catch (Exception e)
{
errorDiaryBB.AddRecord(0, "DataCenterUploadData(For MySQL)", "数据库连接失败" + e.Message + e.StackTrace);
}
MySqlTransaction transaction = mysqlconn.BeginTransaction();
MySqlCommand cmd = mysqlconn.CreateCommand();
cmd.CommandTimeout = 3600;
cmd.Transaction = transaction;
string sql = string.Empty;
#endregion
try
{
#region 上传AP_VC_VaccineStock 疫苗及时库存
if ("AAAA".Equals(TBName))
{
//先删除
sql = "delete from gdm_stock";
cmd = new MySqlCommand(sql, mysqlconn);
cmd.ExecuteNonQuery();
//看看有没有数据
sql = "select count(*) from gdm_stock";
cmd = new MySqlCommand(sql, mysqlconn);
int ExistCount = 0;
Object result = cmd.ExecuteScalar();
if (result != null)
{
ExistCount = int.Parse(result.ToString());
}
if (ExistCount == 0)
{
var sqlbuilder = new StringBuilder();
sqlbuilder.Append("insert into gdm_stock(created_time,updated_time,icebox_name,icebox_no,vaccin_code,manufacturer_code,batch_no,validity_date," +
"store_num,dose,category,hospital_code,is_delete,code) values ");
int index = 0;
foreach (DataRow dr in dt.Rows)
{
DateTime? validityDt = new DateTime();
if (dr["validityDt"] != null && !string.IsNullOrEmpty(dr["validityDt"].ToString()))
{
validityDt = Convert.ToDateTime(dr["validityDt"]);
}
sqlbuilder.AppendFormat("('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}'),",
Convert.ToDateTime(dr["inStockDt"]), DateTime.Now, dr["iceBoxNm"].ToString(), dr["iceBoxNo"].ToString(), dr["vaccineModelNo"].ToString()
, dr["supplyerNo"].ToString(), dr["batchNo"].ToString(), validityDt, Convert.ToInt32(dr["amount"]), dr["spec"].ToString(),
Convert.ToInt32(dr["vaccineType"]), dr["companyNo"].ToString(), Convert.ToInt32(dr["isDel"]), dr["vaccineBarcode"].ToString());
index = index + 1;
if (index == 1000)//如果超过1000,则执行一次,数据多会超时
{
sql = sqlbuilder.ToString();
sql = sql.Substring(0, sql.Length - 1);
cmd = new MySqlCommand(sql, mysqlconn);
cmd.CommandTimeout = 3600;
if (cmd.ExecuteNonQuery() > 0)
{
index = 0;
sqlbuilder = new StringBuilder();
sqlbuilder.Length = 0;
sqlbuilder.Append("insert into gdm_stock(created_time,updated_time,icebox_name,icebox_no,vaccin_code,manufacturer_code,batch_no,validity_date," +
"store_num,dose,category,hospital_code,is_delete,code) values ");
}
}
}
if (index > 0)
{
sql = sqlbuilder.ToString();
sql = sql.Substring(0, sql.Length - 1);
cmd = new MySqlCommand(sql, mysqlconn);
if (cmd.ExecuteNonQuery() > 0)
{
transaction.Commit();
}
}
else
{
transaction.Commit();
}
}
else
{
transaction.Rollback();
}
}
#endregion
mysqlconn.Close();//关闭
}
catch (MySqlException e)
{
errorDiaryBB.AddRecord(0, TBName + "更新出错!", "UploadData Error." + e.Message + e.StackTrace);
transaction.Rollback();
}
finally
{
mysqlconn.Close();
}
}