Przykładowo spróbujmy do bazy danych zapisać plik tekstowy. Baza danych składa się z jednej tabeli. Polami w tej tabeli są:
Plik tekstowy zawiera jedno zdanie: "Ala ma kota". Warto zauważyć że wartość pola varbinary można ustawić także na wartość max co pozwoli nam na przechowywanie plików do 2GB.
Kod pozwalający na zapis do bazy danych pliku:
private void button1_Click(object sender, EventArgs e)
{
byte[] file;
using (FileStream fs = new FileStream(@"d:\plik.txt", FileMode.Open, FileAccess.Read))
{
file = new byte[fs.Length];
fs.Read(file, 0, (int)fs.Length);
}
using (SqlConnection conn = new SqlConnection(@"Data Source=ACER5738\sqlexpress;Initial Catalog=test;Integrated Security=True"))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand("INSERT INTO t1(data) VALUES(@binaryData)", conn))
{
cmd.Parameters.Add(new SqlParameter("@binaryData", file));
cmd.ExecuteNonQuery();
}
}
}
Odczyt z bazy danych jest bardzo podobny. Zapisując pole jako ciąg bajtów musimy je też w taki sam sposób odczytać:
private void button2_Click(object sender, EventArgs e)
{
byte[] file;
using (SqlConnection conn = new SqlConnection(@"Data Source=ACER5738\sqlexpress;Initial Catalog=test;Integrated Security=True"))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand("SELECT TOP 1 data FROM t1", conn))
{
file = (byte[])cmd.ExecuteScalar();
}
}
using (FileStream fs = new FileStream(@"d:\kopia.txt", FileMode.Create, FileAccess.Write))
{
fs.Write(file, 0, file.Length);
}
}
Brak komentarzy:
Prześlij komentarz