◎ 建立 MySQL 資料庫:
啟動 MySQL Workbench --> 連上資料庫主機 --> 在 Query 視窗輸入 CREATE DATABASE KT CHARACTER SET utf8 COLLATE utf8_unicode_ci; --> 然後按執行 --> 在 Query 視窗輸入 USE KT; --> 然後再按 執行 --> 在 Query 視窗輸入:
--> 然後按執行
◎ 安裝 BDE:
◎ Windows 轉檔程式:
以系統管理員身份啟動 Visual Stdio --> 檔案 --> 新增 --> 專案 -->
選擇 Windows Form 應用程式 --> 名稱:MySQLFromParadoxWinAP --> 確定。
C#新增專案 |
選擇 Windows Form 應用程式 --> 名稱:MySQLFromParadoxWinAP --> 確定。
◎ 設計畫面:
轉檔程式畫面設計 |
Form1 放入 buttonSEARCH,buttonPOST,buttonEXIT三個按鍵。再放入 textBoxMsSql,textBoxMysql,textBoxTimeSpan 三個 TextBox,並且將 Enabled 設為 False。在三個 TextBox 之前放入 Label,並標上適當文字。最後加上 dataGridView。習慣上我還會將 Form1 之 WindowState 放到最大:Maximized。
◎ 確定專案為 .Net Framework 4.0:
專案 --> MySQLFromMSWinAP 屬性 --> 目標 Framework --> 確定為 .Net Framework 4.0 ,如果不是,請改過來。
選擇 .Net Framework 4.0 |
◎ 專案加入參考:
專案 --> 加入參考 --> C:\Program Files (x86)\MySQL\MySQL Connector Net 6.8.3\Assemblies\v4.0\MySql.Data.dll 其中 v4.0 符合 .Net Framework 4.0 。與前一項的 .NET Framework 相符--> 加入 --> 確定。
MySQL Connector Net 6.8.3 v4.0 |
◎ 確定專案平台為 x86:
右擊 方案 MySQLFromParadoxWinAP --> 選擇 屬性
方案屬性 |
--> 點擊 組態管理員 --> 使用中的方案平台 , 點擊 Any CPU --> 選擇 <新增...> --> 輸入或選擇新平台:x86 --> 確定 --> 關閉 --> 確定。
組態管理員選擇平台:x86 |
右擊 專案 MySQLFromParadoxWinAP --> 選擇 屬性
專案屬性 |
--> 點擊 建置 --> 確定專案平台為 x86。
專案平台為 x86 |
◎撰寫程式:
Form1 上 buttonSEARCH,buttonPOST,buttonEXIT三個按鍵都雙擊一次。 開始撰寫參數化的轉檔程式。
--> 然後按 執行
--> 然後按 執行
◎程式解析 :
○專案參考命名空間:
using MySql.Data.MySqlClient;
using System.Data.OleDb;
using System.IO;
using System.Data.OleDb;
using System.IO;
○Paradox 資料庫所在目錄:
public string sDIR = @"C:\KT\DATA";
○連線字串:
public string sDIR = @"C:\KT\DATA";
○連線字串:
public string ConnectionStringMySQL = @"server=192.168.0.250;database=PAM;uid=root;pwd=12345678;charset=utf8;PORT=3306;";
○buttonSEARCH_Click:
建立 dtTable --> 用 Directory.GetFiles 抓取資料庫所在目錄的所有檔案 --> 過濾抓到的檔案尾端有 .db 寫入 dtTable
Paradox 連線字串: string ConnectionStringParadox = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + sDIR + ";Extended Properties=Paradox 5.x"; --> 用 OleDb 連結 Paradox 資料庫 OleDbConnection SC_Ole = new OleDbConnection(ConnectionStringParadox); --> 用 SELECT COUNT(*) 指令讀取每個 TParadox 資料表的筆數放進 dtTable 之 Paradox 欄位。
連結 MySQL 資料庫 --> 用 Show Tables 讀出 KT 資料庫所有 Tables --> 用 SELECT COUNT(*) 指令讀取每個 Table 的筆數放進 dtTable 之 MySQL 欄位。
若 Paradox 之筆數大於 0 且 Paradox 之筆數不等於 MySQL 之筆數,Sel 欄位自動標示為 V。
最後將 dataGridView1 之 DataSource 綁訂為 dtTable,為 dataGridView1 做細部設定 --> 然後顯示抓到之總筆數與耗用時間。
Paradox 連線字串: string ConnectionStringParadox = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + sDIR + ";Extended Properties=Paradox 5.x"; --> 用 OleDb 連結 Paradox 資料庫 OleDbConnection SC_Ole = new OleDbConnection(ConnectionStringParadox); --> 用 SELECT COUNT(*) 指令讀取每個 TParadox 資料表的筆數放進 dtTable 之 Paradox 欄位。
連結 MySQL 資料庫 --> 用 Show Tables 讀出 KT 資料庫所有 Tables --> 用 SELECT COUNT(*) 指令讀取每個 Table 的筆數放進 dtTable 之 MySQL 欄位。
若 Paradox 之筆數大於 0 且 Paradox 之筆數不等於 MySQL 之筆數,Sel 欄位自動標示為 V。
最後將 dataGridView1 之 DataSource 綁訂為 dtTable,為 dataGridView1 做細部設定 --> 然後顯示抓到之總筆數與耗用時間。
○buttonPOST_Click:
用 MessageBox 確認轉檔動作 --> 逐步掃描 dataGridView1 抓取 TableName 與 Sel 欄位都有值者才轉檔。
Post1 --> 先抓取 Paradox 資料表 --> 從 Paradox 資料表名稱切出 MySQL 資料表名稱 --> 用 Show Columns from Table 讀出 MySQL 資料庫中該資料表所有的 Column --> 再抓取 MySQL 資料表 --> 剔除 MySQL 現有的資料,只將 Paradox 多的資料存入 MySQL 資料表中。最後返回轉檔的筆數。
Paradox 資料表的結構與 MySQL 略有不同。除了有些欄位名稱需要調整外,Paradox 資料表名稱字尾有 DDD 或 DD2 者會全部轉到字尾為 DBK 之 MySQL 資料表。此外有少許資料因兩種系統結構不同,不用轉檔。
Paradox 資料表的結構與 MySQL 略有不同。除了有些欄位名稱需要調整外,Paradox 資料表名稱字尾有 DDD 或 DD2 者會全部轉到字尾為 DBK 之 MySQL 資料表。此外有少許資料因兩種系統結構不同,不用轉檔。
顯示總轉檔筆數與耗用時間。
○buttonEXIT_Click:
結束轉檔程式
◎執行轉檔程式 :
直接執行 C:\KT\MyKTWinAP\MyKTWinAP\bin\x64\Debug\MyKTWinAP.exe --> 使用者名稱:MGR,密碼:MGR --> 簽入。
MyKTWinAP 順利簽入後之主選單畫面 |
沒有留言:
張貼留言