Jag har en mängd txt filer och många kort som jag vill infoga i databasen. Jag har börjat I och med att signaturen för MemoryStream.Write ser ut så här hjälp med bilder i databas
med det enklaste, att spara bilder på databasen.
Jag har skrivit följande, som det går att spara men inte läsa från databasen:
private void button1_Click(object sender, System.EventArgs e)
{
/// spara som fil typ boxDialog
ofdDataBase.Filter = "db1|*.jpg;*.gif;*.bmp";
/// Öppnas fönstret där man ska välja kort eller fil
if (ofdDataBase.ShowDialog(this)==DialogResult.OK)
{
System.IO.FileStream fs = new FileStream(ofdDataBase.FileName,FileMode.Open,FileAccess.Read);
System.IO.BinaryReader br = new System.IO.BinaryReader(fs);
byte [] abImagen=new byte[fs.Length];
br.Read(abImagen,0,(int)fs.Length);
br.Close();
fs.Close();
try
{
this.oleDbConnection1.Open();
this.oleDbDataAdapter1.InsertCommand.CommandText =
"INSERT INTO table1 ("+
"kort"+
")VALUES ('"+
abImagen+"')";
this.oleDbDataAdapter1.InsertCommand.ExecuteNonQuery();
}
catch(System.Data.OleDb.OleDbException o)
{
MessageBox.Show(o.Message);
}
}
else
MessageBox.Show("Error");
}
private void button1_Click_1(object sender, System.EventArgs e)
{
try
{
int n=1;
this.oleDbConnection1.Open();
this.oleDbDataAdapter1.SelectCommand.CommandText = "SELECT * FROM table1 WHERE id = "+n;
this.oleDbDataAdapter1.Fill(dataSet1);
this.oleDbDataAdapter1.SelectCommand.ExecuteNonQuery();
this.oleDbConnection1.Close();
MemoryStream ms = new MemoryStream();
ms.Write((byte[])dataSet1.Tables[0].Rows[0][1], 0 ,0);
this.pictureBox1.Image = Image.FromStream(ms);
}
catch(System.Data.OleDb.OleDbException o)
{
MessageBox.Show(o.Source+" "+o.Message);
}
}
Detta fungerar inte.
Har ni några tips? vad jag har förstått ska jag spara mina bilder som ole object(omvandla
till det först) men vet inte riktigt hur.
Sen vill jag spara stora document .txt, ska dett onvandlas till ole object också? går det
att göra på samma sätt som mina bilder?
MVH LisaSv: hjälp med bilder i databas
public override void Write (
byte[] buffer,
int offset,
int count
)
Så ser följande mycket suspekt ut..
ms.Write((byte[])dataSet1.Tables[0].Rows[0][1], 0 ,0);
om du fixar längden kunde det till och med funka vettigt. (Sen om det är vettigt att spara bilder i databas är en annan femma)