2014-02-06 128 views
0

我使用此代碼將圖片保存到Access數據庫表:如何將圖片保存到訪問數據庫表中?

byte[] fromPath = File.ReadAllBytes(Picture_Path); 
byte[] fromPath2 = File.ReadAllBytes(BacksidePicture_Path); 

con.Open(); 

string query = "Insert Into DML_Books_List (" + 
    "ID,ISNBORCode, Title, Donor, DocType, Edition, Author1, Author2, Author3, " + 
    "Author4, Translator, Publisher, Subject, USubject, Shelf, Cost, " + 
    "Language, Pages, Image, BImage, Description, Date) VALUES ('" + 
    "2" + "','" + ISNB_AddBook_Books_TXT.Text + "', '" + 
    Title_AddBook_Books_TXT.Text + 
    "', '" + Donor_AddBook_Books_TXT.Text + "', '" + 
    DocType_AddBook_Books_CBE.SelectedItem + "', '" + 
    Edition_AddBook_Books_TXT.Text + "', '" + 
    Author1_AddBook_Books_TXT.Text + "', '" + 
    Author2_AddBook_Books_TXT.Text + "', '" + 
    Author3_AddBook_Books_TXT.Text + "', '" + 
    Author4_AddBook_Books_TXT.Text + "', '" + 
    Translator_AddBook_Books_TXT.Text + "', '" + 
    Publisher_AddBook_Books_CBE.SelectedItem + "', '" + 
    Subject_AddBook_Books_CBE.SelectedItem + "', '" + 
    USubject_AddBook_Books_CBE.SelectedItem + "', '" + 
    Shelf_AddBook_Books_CBE.SelectedItem + "', '" + 
    Cost_AddBook_Books_TXT.Text + "', '" + 
    Language_AddBook_Books_CBE.SelectedItem + "', '" + 
    Pages_AddBook_Books_TXT.Text + "', '" + 
    @fromPath + "', '" + @fromPath2 + "', '" + 
    Description_AddBook_Books_MemoEdit.Text + "', '" + 
    Date_AddBook_Books_TXT.Text + "')"; 

OleDbCommand myCommand = new OleDbCommand(); 
myCommand.CommandText = query; 
myCommand.Connection = con; 
myCommand.ExecuteNonQuery(); 
con.Close(); 

但它也有一些問題。

請幫我解決這個問題。

謝謝

+0

你能告訴我們什麼問題?請編輯問題併發布您的錯誤消息及其發生的行。 – paqogomez

回答

0

使用參數,如下面的代碼:

假設你有你的表兩列名爲IDImage。現在你要插入數據使用SQL參數

你需要的SQL語句像 Insert Into DML_Books_List(ID, [Image]) values (@id, @image)

@id@image是參數的賜名。您可以通過參數名稱設置參數值。

var pic = File.ReadAllBytes(yourFileName); 
using(OleDbConnection con = new OleDbConnection(constr)) 
using(OleDbCommand cmd = new OleDbCommand("Insert Into DML_Books_List(ID, [Image]) values (@id, @image)", con)) 
{ 
    con.Open(); 
    cmd.Parameters.AddWithValue("@id", TextBox1.Text); 
    cmd.Parameters.AddWithValue("@image", pic); 
    cmd.ExecuteNonQuery(); 
} 
+0

你好。你能描述這個代碼嗎?你能告訴我什麼是ID,@ p1,@ p2,textbox1和pic嗎?謝謝 –

+0

我正在使用此代碼'code' var pic = File.ReadAllBytes(Picture_Path);使用(OleDbCommand cmd = new OleDbCommand(「Insert into PIC(Image)values(''+ Picture_Path +'')」,con)) con.Open(); cmd.Parameters.AddWithValue(Picture_Path,pic); cmd.ExecuteNonQuery(); '代碼'但它不起作用。 –

0

使用參數化查詢..

OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=database"); 
OleDbCommand command = connection.CreateCommand(); 

imageData = ReadByteArrayFromFile(@"c:\test.jpg"); 
command.CommandText = "Insert into SomeTable (Name, ImageData) VALUES (@Name, @Img)" 
command.Parameters.AddWithValue("@Name", "theName"); 
command.Parameters.AddWithValue("@Img", imageData); 
command.ExecuteNonQuery(); 
1
OleDb.OleDbConnection cn = new OleDb.OleDbConnection(); 
cn.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0; Data Source=" + Application.StartupPath + "\\data.mdb"; 
cn.Open(); 

byte[] arrImage = null; 
string strImage = null; 
IO.MemoryStream myMs = new IO.MemoryStream(); 
// 
if ((this.picPhoto.Image != null)) { 
    this.picPhoto.Image.Save(myMs, this.picPhoto.Image.RawFormat); 
    arrImage = myMs.GetBuffer; 
    strImage = "?"; 
} else { 
    arrImage = null; 
    strImage = "NULL"; 
} 

OleDb.OleDbCommand myCmd = new OleDb.OleDbCommand(); 
myCmd.Connection = cn; 
myCmd.CommandText = "INSERT INTO tblstudent(stdid, [name], photo) " + " VALUES(" + this.txtID.Text + ",'" + this.txtName.Text + "'," + strImage + ")"; 
if (strImage == "?") { 
    myCmd.Parameters.Add(strImage, OleDb.OleDbType.Binary).Value = arrImage; 
} 

Interaction.MsgBox("Data save successfully!"); 
myCmd.ExecuteNonQuery(); 
cn.Close(); 

Source