1.先載入參考(MySQL.Data)
專案中的參考(右鍵)=>加入參考=>"組件"中尋找MySQL.Data2.建立ConnectString
private static MySqlConnectionStringBuilder MySQL => new MySqlConnectionStringBuilder { Server = "127.0.0.1", //MySQL的位置或URL(127.0.0.1為本地) Port = 3306, //MySQL預設Port為3306 UserID = "Username", //MySQL的使用者帳號 Password = "Password", //MySQL的使用者密碼 Database = "mydb", //MySQL的DB名稱 CharacterSet = "utf8" //MySQL的字元集 };3.讀取MySQL
讀取DB內的table的所有資料至DataSet,
相關的資料操作請參考DataSet。
private static DataSet GetDataFromMySQL()
{
DataSet ds;
using (var conn = new MySqlConnection(MySQL.ConnectionString))
{
const string sql = @" SELECT * FROM `tableName`";
using (var adapter = new MySqlDataAdapter(sql, conn))
{
try
{
ds = new DataSet();
adapter.Fill(ds, "tableName");
}
catch
{
MessageBox.Show(@"Can not connect to database...", @"Message");
ds = null;
}
}
}
return ds;
}
4.更新MySQL
藉由MySqlDataAdapter會自動生成相關的command,如果需要更詳細的調整可自己寫SQL command。
MySqlDataAdapter會自動判斷並使用相關的command,
例如:有增加DataRow會使用InsertCommand
有減少DataRow會使用DeleteCommand
DataRow無增減,但row內容有改變時,會使用UpdateCommand
*註: 使用UpdateCommand時要特別注意不可改變DataRow的順序,
不然MySQL會報內部錯誤。
避免這問題最好是修改過一個DataRow就Update一次較為保險,
但遇到資料量大時效率會變差。
public static bool UpdateMySQL(DataTable table) { using (var conn = new MySqlConnection(MySQL.ConnectionString)) { var sql = $@"SELECT * FROM `{table.TableName}`"; using (var adapter = new MySqlDataAdapter(sql, conn)) { using (var cmd = new MySqlCommandBuilder(adapter)) { adapter.InsertCommand = cmd.GetInsertCommand();//可省略會自動生成, adapter.DeleteCommand = cmd.GetDeleteCommand();//也可自己下SQL指令。 adapter.UpdateCommand = cmd.GetUpdateCommand(); var updateNum = adapter.Update(table); Console.WriteLine($@"更新{updateNum}個檔案"); return updateNum != 0; } } } }