W
William Ryan
Cam you tell us specifically what's giving you the problem?
Assuming you have an open connection already..
To Read
SqlCommand cmd;
SqlDataReader rdr;
int myBigColumn
Byte[] myBlob;
rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess);
while (rdr.Read())
{
myBlob = (Byte[]) rdr[0];
}
To Write it (this is from MSDN, it's not mine but I don't
think it's the same article...
using System;
using System.Data;
using System.Data.SqlClient;
using System.IO;
public class EmployeeData
{
public static void Main()
{
DateTime hireDate = DateTime.Parse("5/21/99");
AddEmployee("Jones", "Mary", "Sales Representative",
hireDate, 5, "jones.bmp");
}
public static void AddEmployee(string lastName, string
firstName, string title, DateTime hireDate , int
reportsTo, string photoFilePath)
{
byte[] photo = GetPhoto(photoFilePath);
SqlConnection nwindConn = new SqlConnection("Data
Source=localhost;Integrated Security=SSPI;Initial
Catalog=Northwind;");
SqlCommand addEmp = new SqlCommand("INSERT INTO
Employees (LastName, FirstName, Title, HireDate,
ReportsTo, Photo) " +
"Values(@LastName,
@FirstName, @Title, @HireDate, @ReportsTo, @Photo)",
nwindConn);
addEmp.Parameters.Add("@LastName",
SqlDbType.NVarChar, 20).Value = lastName;
addEmp.Parameters.Add("@FirstName",
SqlDbType.NVarChar, 10).Value = firstName;
addEmp.Parameters.Add("@Title",
SqlDbType.NVarChar, 30).Value = title;
addEmp.Parameters.Add("@HireDate",
SqlDbType.DateTime).Value = hireDate;
addEmp.Parameters.Add("@ReportsTo",
SqlDbType.Int).Value = reportsTo;
addEmp.Parameters.Add("@Photo", SqlDbType.Image,
photo.Length).Value = photo;
nwindConn.Open();
addEmp.ExecuteNonQuery();
nwindConn.Close();
}
public static byte[] GetPhoto(string filePath)
{
FileStream fs = new FileStream(filePath,
FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] photo = br.ReadBytes((int)fs.Length);
br.Close();
fs.Close();
return photo;
}
}
I've used this same methodology to get it to work, and
while I avoid Blobs for the most part, it should work.
If you can isolate what isn't working, I can probably be
of more help.
Cheers,
Bill
Assuming you have an open connection already..
To Read
SqlCommand cmd;
SqlDataReader rdr;
int myBigColumn
Byte[] myBlob;
rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess);
while (rdr.Read())
{
myBlob = (Byte[]) rdr[0];
}
To Write it (this is from MSDN, it's not mine but I don't
think it's the same article...
using System;
using System.Data;
using System.Data.SqlClient;
using System.IO;
public class EmployeeData
{
public static void Main()
{
DateTime hireDate = DateTime.Parse("5/21/99");
AddEmployee("Jones", "Mary", "Sales Representative",
hireDate, 5, "jones.bmp");
}
public static void AddEmployee(string lastName, string
firstName, string title, DateTime hireDate , int
reportsTo, string photoFilePath)
{
byte[] photo = GetPhoto(photoFilePath);
SqlConnection nwindConn = new SqlConnection("Data
Source=localhost;Integrated Security=SSPI;Initial
Catalog=Northwind;");
SqlCommand addEmp = new SqlCommand("INSERT INTO
Employees (LastName, FirstName, Title, HireDate,
ReportsTo, Photo) " +
"Values(@LastName,
@FirstName, @Title, @HireDate, @ReportsTo, @Photo)",
nwindConn);
addEmp.Parameters.Add("@LastName",
SqlDbType.NVarChar, 20).Value = lastName;
addEmp.Parameters.Add("@FirstName",
SqlDbType.NVarChar, 10).Value = firstName;
addEmp.Parameters.Add("@Title",
SqlDbType.NVarChar, 30).Value = title;
addEmp.Parameters.Add("@HireDate",
SqlDbType.DateTime).Value = hireDate;
addEmp.Parameters.Add("@ReportsTo",
SqlDbType.Int).Value = reportsTo;
addEmp.Parameters.Add("@Photo", SqlDbType.Image,
photo.Length).Value = photo;
nwindConn.Open();
addEmp.ExecuteNonQuery();
nwindConn.Close();
}
public static byte[] GetPhoto(string filePath)
{
FileStream fs = new FileStream(filePath,
FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] photo = br.ReadBytes((int)fs.Length);
br.Close();
fs.Close();
return photo;
}
}
I've used this same methodology to get it to work, and
while I avoid Blobs for the most part, it should work.
If you can isolate what isn't working, I can probably be
of more help.
Cheers,
Bill