標籤:style blog http color os io ar 資料 2014
在學習sqlite的過程中,發現它的dll是區分32位和64位的,起初覺得很惱火,但是仔細看了下,
發現讓程式自行選擇dll其實也不是一件很麻煩的事情,如下:
1>建立一個sqlite資料
2>建立一個工程
3>建立一個類
1 class Entrance : Application 2 { 3 [STAThread] 4 static void Main() 5 { 6 string dll32 = @".\SQLitedll\System.Data.SQLite32.dll"; 7 string dll64 = @".\SQLitedll\System.Data.SQLite64.dll"; 8 string dllpath = @".\System.Data.SQLite.dll"; 9 10 if (IntPtr.Size == 8)11 {12 using (FileStream fs=File.Create(dllpath)){}13 File.Copy(dll64,dllpath,true);14 }15 else if(IntPtr.Size == 4)16 {17 using (FileStream fs=File.Create(dllpath)){}18 File.Copy(dll32,dllpath,true);19 }20 else21 {MessageBox.Show("ERROR!");}22 //start up the main window23 Application app = new Application();24 MainWindow window = new MainWindow();25 app.Run(window);26 }27 }
4>添加按鈕響應事件
1 private void Button_Click(object sender, RoutedEventArgs e) 2 { 3 string strconn = @"Data Source=.\student.db;Version=3"; 4 string strcmd = "select * from stu"; 5 SQLiteConnection con = new SQLiteConnection(strconn); 6 try 7 { 8 con.Open(); 9 }10 catch (Exception ex)11 { MessageBox.Show(ex.ToString()); }12 13 14 SQLiteCommand cmd = new SQLiteCommand(strcmd, con);15 16 17 cmd.ExecuteNonQuery();18 19 SQLiteDataAdapter dataApp = new SQLiteDataAdapter(cmd);20 DataTable dt = new DataTable("a");21 dataApp.Fill(dt);22 dataGrid1.ItemsSource = dt.DefaultView;23 dataApp.Update(dt);24 con.Close();25 }26 }
5>最終效果(左邊是win8 64位測試效果,右邊是xp 32位測試效果)[注:新版的System.Data.SQLite.dll可能需要msvcr100.dll的支援,在測試
的機器上如果沒有這個dll會莫名地崩潰,還catch不到異常,具體可能跟版本有關,可以用depends來查看一下]
WPF 自動選擇dll,以SQLite為例