2016年4月23日 星期六

SQL Server CE 使用(.sdf, 圖片, ADO.NET 基礎操作) .NET Entity Framework


在 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


基本引用有:


 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();

這裡圖片儲存的用法也一併作為範例來除存,個人不建議將圖片儲存至資料庫,會對管理上造成很大的不方便!

沒有留言:

張貼留言

© Mac Taylor, 歡迎自由轉貼。
Background Email Pattern by Toby Elliott
Since 2014