mysql workbench 無法開啟,原因是必須得安裝下列兩個軟體才可以運行。
1. .netFramework 4.0
2. Microsoft Visual C++ 2010 Redistributable Package (x86)
2014年5月17日 星期六
2014年4月4日 星期五
MYSQL 取得上一次自動編號的值
如果表格主鍵為自動編號,新增完後要如何取得剛剛新增後所產生的數字呢?
只要加上【SELECT LAST_INSERT_ID();】在INSERT語句後即可。
EX:
INSERT INTO "TABLENAME" (FIELD NAME) VALUES ("VALUE");
SELECT LAST_INSERT_ID();
只要加上【SELECT LAST_INSERT_ID();】在INSERT語句後即可。
EX:
INSERT INTO "TABLENAME" (FIELD NAME) VALUES ("VALUE");
SELECT LAST_INSERT_ID();
2014年1月23日 星期四
2014年1月17日 星期五
C# : 使用 DataSet 管理從 MySQL 查詢出來的資料
此文引用自:http://godstamps.blogspot.tw/2012/02/c-dataset-mysql.html
在【C# : 對 MySQL 查詢資料】一文中查詢多筆資料所使用到的 MySqlDataReader 會與資料庫建立持續性的連線,所以在查詢完資料後必須明確的 Close();有時候我們會使用多句不同的查詢語句查詢出資料並長時間交互使用資料內容,而且這些資料並不會馬上被更新或是不需要更新,那麼每次都重新查詢或是使這些 MySqlDataReader 都一直維持連線,好像怎麼樣都不是很理想,這時候我們就可以考慮使用 DataSet 建立資料塊。
首先,利用 MySqlDataAdapter 來查詢資料並為查出的資料定義一個名稱整塊填入 DataSet 中做為 DataTable,之後可以利用所定義的名稱從 DataSet 取出 DataTable 並在 DataTable 指定列及欄位取得所需要的資料;而且也可為 DataTable 新增、修改、刪除資料,最終再整理 MySQL 語句將結果更新回資料庫中,如此將可對資料庫避免一些不必要讀寫的次數。大致的用法如下...
//開啟連線
MySqlConnection conn = new MySqlConnection("server=127.0.0.1;user=root;database=test;port=3306;password=1111;");
conn.Open();
//建立 DataSet
DataSet dataSet = new DataSet();
//使用 MySqlDataAdapter 查詢資料,並將結果存回 DataSet 當做名為 test1 的 DataTable
string sql = "SELECT * FROM test_table1 WHERE 1";
MySqlDataAdapter dataAdapter1 = new MySqlDataAdapter(sql, conn);
dataAdapter1.Fill(dataSet, "test1");
//使用 MySqlDataAdapter 查詢資料,並將結果存回 DataSet 當做名為 test2 的 DataTable
dataAdapter2 = new MySqlDataAdapter("SELECT * FROM test_table2 WHERE 1", conn);
dataAdapter2.Fill(dataSet, "test2");
// test1 的 DataTable
DataTable dataTable = dataSet.Tables["test1"];
//列出 test1 的第 4 筆資料
Console.WriteLine("id={0} , name={1}", dataTable.Rows[3]["id"], DataTable.Rows[3]["name"]);
//列出 test1 的總筆數
Console.WriteLine("總筆數:{0}", dataTable.Rows.Count);
//逐筆列出 test1 的資料
foreach(DataRow row in dataTable.Rows){
Console.WriteLine("id={0},name={1}", row["id"], row["name"]);
}
//建立新一列的資料
DataRow newRow = dataTable.NewRow();
newRow["id"] = 999;
newRow["name"] = "testName999";
//在 test1 中新增一筆資料
dataTable.Rows.Add(newRow);
//刪除 test1 中的 第 4 筆資料
dataTable.Rows[3].Delete();
//修改 test1 中第 1 筆資料的 name 欄位內容
dataTable.Rows[0]["name"] = "newName";
//利用 MySqlCommandBuilder 使 dataAdapter1 能夠實行新增、修改、刪除
new MySqlCommandBuilder(dataAdapter1);
//將 test1 內容的變動更新回資料庫
dataAdapter1.Update(dataSet, "test1");
一個 DataSet 可以存放多個 DataTable,而每個 DataTable 資料的變更可以透過 MySqlDataAdapter 連接更新回資料庫,這樣可以很方便的管理多批資料,不過要特別注意的是複雜語句查出的資料可能會無法正確處理,如 JOIN、GROUP BY ... 等。
以上範例可以簡單的應用在 Windows Form 應用程式的 DataGridView ...
假設有的 DataGridView 實作為 dataGridView1,延續上面範例的 DataSet ...
//指定資料來源
dataGridView1.DataSource = dataSet;
//指定列出 test1 DataTable 內容
dataGridView1.DataMember = "test1";
這樣在顯示視窗的 DataGridView 內容就會依照 test1 DataTable 資料欄位將內容資料以列表的方式顯示出來,可以直接在列表中新增、修改、刪除資料,不過如果想將變更的內容更新回資料庫,可能就要再加一個按鈕,使它在點擊之後執行以下這兩句,才會更新,否則只是表單上表面看到的變動而已,資料庫並不會有任何更改。
new MySqlCommandBuilder(dataAdapter1);
dataAdapter1.Update(dataSet, "test1");
在【C# : 對 MySQL 查詢資料】一文中查詢多筆資料所使用到的 MySqlDataReader 會與資料庫建立持續性的連線,所以在查詢完資料後必須明確的 Close();有時候我們會使用多句不同的查詢語句查詢出資料並長時間交互使用資料內容,而且這些資料並不會馬上被更新或是不需要更新,那麼每次都重新查詢或是使這些 MySqlDataReader 都一直維持連線,好像怎麼樣都不是很理想,這時候我們就可以考慮使用 DataSet 建立資料塊。
首先,利用 MySqlDataAdapter 來查詢資料並為查出的資料定義一個名稱整塊填入 DataSet 中做為 DataTable,之後可以利用所定義的名稱從 DataSet 取出 DataTable 並在 DataTable 指定列及欄位取得所需要的資料;而且也可為 DataTable 新增、修改、刪除資料,最終再整理 MySQL 語句將結果更新回資料庫中,如此將可對資料庫避免一些不必要讀寫的次數。大致的用法如下...
//開啟連線
MySqlConnection conn = new MySqlConnection("server=127.0.0.1;user=root;database=test;port=3306;password=1111;");
conn.Open();
//建立 DataSet
DataSet dataSet = new DataSet();
//使用 MySqlDataAdapter 查詢資料,並將結果存回 DataSet 當做名為 test1 的 DataTable
string sql = "SELECT * FROM test_table1 WHERE 1";
MySqlDataAdapter dataAdapter1 = new MySqlDataAdapter(sql, conn);
dataAdapter1.Fill(dataSet, "test1");
//使用 MySqlDataAdapter 查詢資料,並將結果存回 DataSet 當做名為 test2 的 DataTable
dataAdapter2 = new MySqlDataAdapter("SELECT * FROM test_table2 WHERE 1", conn);
dataAdapter2.Fill(dataSet, "test2");
// test1 的 DataTable
DataTable dataTable = dataSet.Tables["test1"];
//列出 test1 的第 4 筆資料
Console.WriteLine("id={0} , name={1}", dataTable.Rows[3]["id"], DataTable.Rows[3]["name"]);
//列出 test1 的總筆數
Console.WriteLine("總筆數:{0}", dataTable.Rows.Count);
//逐筆列出 test1 的資料
foreach(DataRow row in dataTable.Rows){
Console.WriteLine("id={0},name={1}", row["id"], row["name"]);
}
//建立新一列的資料
DataRow newRow = dataTable.NewRow();
newRow["id"] = 999;
newRow["name"] = "testName999";
//在 test1 中新增一筆資料
dataTable.Rows.Add(newRow);
//刪除 test1 中的 第 4 筆資料
dataTable.Rows[3].Delete();
//修改 test1 中第 1 筆資料的 name 欄位內容
dataTable.Rows[0]["name"] = "newName";
//利用 MySqlCommandBuilder 使 dataAdapter1 能夠實行新增、修改、刪除
new MySqlCommandBuilder(dataAdapter1);
//將 test1 內容的變動更新回資料庫
dataAdapter1.Update(dataSet, "test1");
一個 DataSet 可以存放多個 DataTable,而每個 DataTable 資料的變更可以透過 MySqlDataAdapter 連接更新回資料庫,這樣可以很方便的管理多批資料,不過要特別注意的是複雜語句查出的資料可能會無法正確處理,如 JOIN、GROUP BY ... 等。
以上範例可以簡單的應用在 Windows Form 應用程式的 DataGridView ...
假設有的 DataGridView 實作為 dataGridView1,延續上面範例的 DataSet ...
//指定資料來源
dataGridView1.DataSource = dataSet;
//指定列出 test1 DataTable 內容
dataGridView1.DataMember = "test1";
這樣在顯示視窗的 DataGridView 內容就會依照 test1 DataTable 資料欄位將內容資料以列表的方式顯示出來,可以直接在列表中新增、修改、刪除資料,不過如果想將變更的內容更新回資料庫,可能就要再加一個按鈕,使它在點擊之後執行以下這兩句,才會更新,否則只是表單上表面看到的變動而已,資料庫並不會有任何更改。
new MySqlCommandBuilder(dataAdapter1);
dataAdapter1.Update(dataSet, "test1");
2013年11月20日 星期三
MySql 啟動與關閉
MySql 是壓縮檔,下述會提供兩個 .Bat 檔
Start.bat
start /B C:\mysql\bin\mysqld --defaults-file=d:\app\mysql\my.ini
stop.bat
C:\mysql\bin\mysqladmin -u root shutdown
參考網站:
1. http://bbs.chinaunix.net/thread-1440020-1-1.html
2. http://forum.slime.com.tw/thread222048.html
Start.bat
start /B C:\mysql\bin\mysqld --defaults-file=d:\app\mysql\my.ini
stop.bat
C:\mysql\bin\mysqladmin -u root shutdown
參考網站:
1. http://bbs.chinaunix.net/thread-1440020-1-1.html
2. http://forum.slime.com.tw/thread222048.html
外部連結 MySql 資料庫
要在外部連接 MySql 資料庫,必須額外設定才可以連線。
第一步:先設定權限表
開啟終端機
# mysql -u 帳號 -p
# password: 密碼
mysql > GRANT ALL PRIVILEGES ON DbName.* TO UserName@IP IDENTIFIED BY 'PassWord' WITH GRANT OPTION;
mysql > FLUSH PRIVILEGES;
解釋:
1. dbName → 要開放的資料庫名稱
2. UserName → 遠端登入的帳號
3. IP → 開放連線的 IP,使用%的話,可以讓所有的電腦都可以連線
4. PassWord → 遠端登入的密碼
第二步:設定防火牆,打開埠號【3306】。
參考網站:
2013年4月28日 星期日
MySql設定成UTF-8
目前MYSQL已經是免安裝版,到網站下載致電腦後,解壓縮至放置位置(C:\mysql-5.6.10-winx64),找到C:\mysql-5.6.10-winx64目錄下找到my-default.ini檔,先複製一份備份,然後將my-default.ini改名為my.ini,如果沒改名,所修改的設定將不會生效,接下來進入設定檔。
找到[client]區塊:
[client]
default-character-set=utf8 //加上此行
找到[mysqld]區塊:
[mysqld]
character_set_server=utf8 //加上此行
collation-server=utf8_general_ci //加上此行
注意:在設定檔中[client]區塊位置一定要比[mysqld]前面,否則您執行mysql.exe檔將會閃一下就不見,不能進入mysql 命令列。
2013年4月7日 星期日
MySql 匯出、匯入資料
原本是使用phpmyadmin管理MySql資料庫,後來因開發jsp,所以換別的管理工具,但發現這之間的格式大不同,匯出的資料無法互轉,造成很大的困惱,經過幾番搜尋,發現MySql自己本身就有匯出匯入的功能。
不論在 Windows 或是 Linux 的環境下,都可以很順利的將某個資料庫內容作匯出及匯入。
範例: MySQL 資料庫的帳號為 root,密碼為 123,資料庫為 myDb。
匯出
/mysql/bin --opt -uroot -p123 myDb > myDb.sql
‧匯入
/mysql/bin -uroot -p123 myDb < myDb.sql
PS:一定要將路徑指向【bin】資料夾。
不論在 Windows 或是 Linux 的環境下,都可以很順利的將某個資料庫內容作匯出及匯入。
範例: MySQL 資料庫的帳號為 root,密碼為 123,資料庫為 myDb。
匯出
/mysql/bin --opt -uroot -p123 myDb > myDb.sql
‧匯入
/mysql/bin -uroot -p123 myDb < myDb.sql
PS:一定要將路徑指向【bin】資料夾。
2012年10月29日 星期一
ODBC 設定 MySQL 無法連線
到MySQL官網下載 MySQL ODBC 3.51 Driver,安裝完後,設定連線,結果顯示無法連線。
嘗試了許久,發現了兩個問題:
1. 防火牆:連線被防火牆擋住,我是直接關掉,如果有安全性的考量,請開3306 Port。
2. root預設只能連本機:root帳號在預設值是只能連本機的(127.0.0.1、locathost),當然要開的話也可以,不過建議新建立一個帳號,會比較好。
訂閱:
文章 (Atom)