在 SQL Server 2012 以前,資料庫檔案好像是使用 .sdf ,在 SQL Server 2012 之後則改為 .mdf,若要存取舊版的資料庫,則要使用 Sql Ce ,這個 SQL CE 需要安裝 SQL Server Compact 4.0。
以SQL Server CE 操作為例,其普通的 SQL Client 好像要改用 OleDb連接,基本上用法大同小異。
.sdf, .mdf 參考: http://stackoverflow.com/questions/12450515/when-to-use-mdf-and-when-sdf
.sdf, .mdf 參考: http://stackoverflow.com/questions/12450515/when-to-use-mdf-and-when-sdf
基本引用有:
using Data.SqlServerCe; //請自行加入參考 SqlServerCe.dll //建立一個資料庫 SqlCeEngine engine = new SqlCeEngine("Data Source = Test.sdf"); engine.CreateDatabase(); //建立 connection 物件 SqlCeConnection conn = null; //連線資料庫 conn = new SqlCeConnection("Data Source = Test.sdf"); conn.Open(); //讀取(SQL Command) SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = "SELECT * FROM Pictures"; SqlCeDataReader rdr = cmd.ExceuteReader(); //rdr 是集合 while(rdr.Read()){ Console.WriteLine(rdr.GetString(1)); Bitmap b = new Bitmap(Image.FromStream(rdr.GetStream(2))); // Get Image } //清除 Command cmd.Parameters.Clear(); //使用預存程序來做 Insert string fileName = openFileDialog1.FileName; Image myImage = Image.FromFile(fileName); System.IO.MemoryStream ims = new System.IO.MemoryStream(); myImage.Save(ims,System.Drawing.Imaging.ImageFormat.Jpeg); byte[] imb = ims.GetBuffer(); SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = "UPDATE Pictures SET Picture = @myPicture WHERE id = @id;"; cmd.Parameters.Add("@id", "67"); cmd.Parameters.Add("@myPicture", SqlDbType.Image).Value = imb; cmd.Prepare(); cmd.ExecuteNonQuery(); MessageBox.Show("圖片儲存成功"); //清除 Command cmd.Parameters.Clear(); // 欲將得到的資料直接設定到 DataGridView DataSet ds = new DataSet(); SqlDataAdapter ds = new SqlDataAdapter("SELECT * FROM Employee",conn); da.Fill(ds, "部門"); dataGridView1.DataSource = ds.Tables["部門"]; //關閉 conn.Close();
這裡圖片儲存的用法也一併作為範例來除存,個人不建議將圖片儲存至資料庫,會對管理上造成很大的不方便!
沒有留言:
張貼留言