2014-02-06 129 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