嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元微信扫码支付:2 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
資料庫內容繁簡轉換
using Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter;
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SQLChineseTrans
{
public partial class Form1 : Form
{
/// <summary>
///
/// </summary>
Properties.Settings AppSetting = new Properties.Settings();
/// <summary>
/// MS-SQL連線字串
/// </summary>
string msSQLconnectionString;
/// <summary>
/// MySQL連線字串
/// </summary>
string mySQLconnectionString;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
#region MS-SQL Part
mssql_IP.Text = AppSetting.mssql_Server;
mssql_Database.Text = AppSetting.mssql_Database;
mssql_UserName.Text = AppSetting.mssql_User;
mssql_Password.Text = AppSetting.mssql_Password;
if (mssql_UserName.Text == "" && mssql_Password.Text == "")
{
msSQLconnectionString = "Data Source=" mssql_IP.Text "; Initial Catalog=" mssql_Database.Text "; Integrated Security=True";
}
else
{
msSQLconnectionString = "Data Source=" mssql_IP.Text "; Initial Catalog=" mssql_Database.Text "; Usert ID=" mssql_UserName.Text "; Password=" mssql_Password.Text "; Integrated Security=True";
}
#endregion
#region MySQL Part
mysql_IP.Text = AppSetting.mysql_Server;
mysql_UserName.Text = AppSetting.mysql_User;
mysql_Database.Text = AppSetting.mysql_Database;
mysql_Password.Text = AppSetting.mysql_Password;
mySQLconnectionString = "Data Source=" mysql_IP.Text "; User ID=" mysql_UserName.Text "; Password=" mysql_Password.Text "; DataBase=" mysql_Database.Text "; Charset=utf8;";
#endregion
}
/// <summary>
///
/// </summary>
/// <param name="dtName"></param>
/// <param name="connectionString"></param>
private void dtConvertForMSSQL(string dtName, string connectionString)
{
string sql = "";
SqlCommand cmd = null;
SqlDataAdapter da = null;
DataTable dt = null;
SqlCommandBuilder builder = null;
using (SqlConnection conn = new SqlConnection(connectionString))
{
try
{
sql = "SELECT * FROM " dtName;
cmd = new SqlCommand(sql, conn);
conn.Open();
da = new SqlDataAdapter(cmd);
da.MissingSchemaAction = MissingSchemaAction.AddWithKey; //加入必要的欄位與主索引鍵資訊來完成結構描述
dt = new DataTable();
da.Fill(dt); //遍歷dt做替換
if (dt.Rows.Count > 0)
{
//如果表包含主鍵
if (dt.PrimaryKey.Length > 0)
{
#region 遍歷
for (int i = 0; i < dt.Rows.Count; i )
{
for (int j = 0; j < dt.Columns.Count; j )
{
if (dt.Columns[j].DataType.ToString() == "System.String")
{
if (dt.Rows[i][j] != null)
{
if (dt.Rows[i][j].ToString() != string.Empty)
{
//進行簡轉繁預備動作
dt.Rows[i][j] = ChineseConverter.Convert(dt.Rows[i][j].ToString(), ChineseConversionDirection.SimplifiedToTraditional);
}
}
}
}
}
#endregion
builder = new SqlCommandBuilder(da);
dt.BeginLoadData();
da.Update(dt); ////執行簡轉繁動作
dt.EndLoadData();
}
//釋放資源
builder.Dispose();
cmd.Dispose();
da.Dispose();
dt.Clear();
dt.Dispose();
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
}
/// <summary>
///
/// </summary>
/// <param name="connectionString"></param>
/// <returns></returns>
private DataTable tableListForMSSQL(string connectionString)
{
DataTable dt = new DataTable();
using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand("SELECT * FROM INFORMATION_SCHEMA.Tables", conn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
try
{
conn.Open();
da.Fill(ds, "temp_tables");
dt = ds.Tables["temp_tables"];
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
return dt;
}
/// <summary>
///
/// </summary>
/// <param name="dtName"></param>
/// <param name="connectionString"></param>
private void dtConvertForMySQL(string dtName, string connectionString)
{
string sql = "";
MySqlCommand cmd = null;
MySqlDataAdapter da = null;
DataTable dt = null;
MySqlCommandBuilder builder = null;
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
try
{
sql = "SELECT * FROM " dtName;
cmd = new MySqlCommand(sql, conn);
conn.Open();
da = new MySqlDataAdapter(cmd);
//添加主鍵映射
da.MissingSchemaAction = MissingSchemaAction.AddWithKey;
dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count > 0)
{
//如果表包含主鍵
if (dt.PrimaryKey.Length > 0)
{
#region 遍歷
for (int i = 0; i < dt.Rows.Count; i )
{
for (int j = 0; j < dt.Columns.Count; j )
{
if (dt.Columns[j].DataType.ToString() == "System.String")
{
if (dt.Rows[i][j] != null)
{
if (dt.Rows[i][j].ToString() != string.Empty)
{
dt.Rows[i][j] = ChineseConverter.Convert(dt.Rows[i][j].ToString(), ChineseConversionDirection.SimplifiedToTraditional);
}
}
}
}
}
#endregion
builder = new MySqlCommandBuilder(da);
dt.BeginLoadData();
da.Update(dt);
dt.EndLoadData();
}
//釋放資源
builder.Dispose();
cmd.Dispose();
da.Dispose();
dt.Clear();
dt.Dispose();
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
}
/// <summary>
///
/// </summary>
/// <param name="connectionString"></param>
/// <returns></returns>
private DataTable tableListForMySQL(string connectionString)
{
DataTable dt = new DataTable();
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
//SHOW TABLES為MySQL列出所有表,如SQLServer請使用相關命令
MySqlCommand cmd = new MySqlCommand("SHOW TABLES", conn);
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet(); try
{
conn.Open();
da.Fill(ds, "temp_tables");
dt = ds.Tables["temp_tables"];
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
return dt;
}
/// <summary>
/// 判斷是否為GB2312編碼
/// </summary>
/// <param name="s">指定的字串</param>
/// <returns>GB2312編碼傳回true,Big5編碼其他編碼則傳回false</returns>
public bool IsGBEncoding(string s)
{
byte[] bytes = Encoding.GetEncoding("GB2312").GetBytes(s);
// if there is only one byte, it is ASCII code or other code
if (bytes.Length <= 1)
{
return false;
}
else
{
byte byte1 = bytes[0];
byte byte2 = bytes[1];
//判斷是否是GB2312
if (byte1 >= 176 && byte1 <= 247 && byte2 >= 160 && byte2 <= 254)
{
return true;
}
else
{
return false;
}
}
}
public static bool IsBig5Encoding(string s)
{
byte[] bytes = Encoding.GetEncoding(950).GetBytes(s);
Encoding big5 = Encoding.GetEncoding(950);
//將byte[]轉為string再轉回byte[]看位元數是否有變
return bytes.Length == big5.GetByteCount(big5.GetString(bytes));
}
/// <summary>
/// 轉換指定的字串到指定的繁(簡)體,
/// Language:Big5 則轉繁體、GB2312 則轉簡體
/// </summary>
/// <param name="SourceString">指定的字串</param>
/// <param name="Language">指定的繁(簡)體,Big5 則轉繁體、GB2312 則轉簡體,其他狀況則輸出原字串</param>
/// <returns>回傳轉換後的字串</returns>
private string Convert(string SourceString, string Language)
{
string newString = string.Empty;
switch (Language)
{
case "Big5":
newString = ChineseConverter.Convert(SourceString, ChineseConversionDirection.SimplifiedToTraditional);
break;
case "GB2312":
newString = ChineseConverter.Convert(SourceString, ChineseConversionDirection.TraditionalToSimplified);
break;
default:
newString = SourceString;
break;
}
return newString;
}
/// <summary>
/// MSSQL資料庫轉換
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
//msSQLconnectionString = AppSetting.msSQLconnectionString;
DataTable dtAll = tableListForMSSQL(msSQLconnectionString);
if (dtAll != null)
{
if (dtAll.Rows.Count > 0)
{
for (int i = 0; i < dtAll.Rows.Count; i )
{
dtConvertForMSSQL(dtAll.Rows[i]["TABLE_NAME"].ToString(), msSQLconnectionString);
}
}
}
MessageBox.Show("已完成轉換!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
/// <summary>
/// MySQL資料庫轉換
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
//mySQLconnectionString = AppSetting.mySQLconnectionString;
DataTable dtAll = tableListForMySQL(mySQLconnectionString);
if (dtAll != null)
{
if (dtAll.Rows.Count > 0)
{
for (int i = 0; i < dtAll.Rows.Count; i )
{
dtConvertForMySQL(dtAll.Rows[i][0].ToString(), mySQLconnectionString);
}
}
}
MessageBox.Show("已完成轉換!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void button3_Click(object sender, EventArgs e)
{
AppSetting.mssql_Server = mssql_IP.Text;
AppSetting.mssql_Database = mssql_Database.Text;
AppSetting.mssql_User = mssql_UserName.Text;
AppSetting.mssql_Password = mssql_Password.Text;
}
private void button4_Click(object sender, EventArgs e)
{
AppSetting.mysql_Server = mysql_IP.Text;
AppSetting.mysql_Database = mysql_Database.Text;
AppSetting.mysql_User = mysql_UserName.Text;
AppSetting.mysql_Password = mysql_Password.Text;
}
}
}