Store/retrieve 个文件 to/from SQL 服务器数据库
Store/retrieve files to/from SQL Server database
我想允许用户将文件附加到项目。文件可以是图像、文档、文本、zip 文件等。
我在我的数据库中创建了一个 table,它将存储文件名、扩展名、大小、关于文件的注释和文件数据。文件数据的列类型是 VarBinary
(blob)。
现在,我已经获取了用户的输入并将其存储在我的本地列表视图中(未绑定到数据库)。我想迭代列表视图行并将它们存储到数据库中。我应该如何将文件数据存储到 BLOB 列?
试试这个
// **** Read File/Image into Byte Array from Filesystem
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;
}
然后调用上面的函数添加到数据库
// **** Read Image from Filesystem and add it to the Database.
public void AddFileDataIntoDatabase(
string a,string b,string c, string photoFilePath)
{
// Read Image into Byte Array from Filesystem
byte[] photo = GetPhoto(photoFilePath);
// Construct INSERT Command
SqlCommand addEmp = new SqlCommand(
"INSERT INTO tablename ("+
"col1,col2,Col3,Photo) "+
"VALUES(@col1,@col2,@col3,@Photo)",_conn);
addEmp.Parameters.Add("@col1", SqlDbType.NVarChar, 20).Value = plastName;
addEmp.Parameters.Add("@col2", SqlDbType.NVarChar, 10).Value = pfirstName;
addEmp.Parameters.Add("@col3", SqlDbType.NVarChar, 30).Value = ptitle;
addEmp.Parameters.Add("@Photo", SqlDbType.Image, photo.Length).Value = photo;
// Open the Connection and INSERT the BLOB into the Database
_conn.Open();
addEmp.ExecuteNonQuery();
_conn.Close();
}
SELECT * FROM OPENROWSET(BULK N'<FILEPATH>', SINGLE_BLOB) AS Contents
It'll pull in the contents of the file as varbinary.
我想允许用户将文件附加到项目。文件可以是图像、文档、文本、zip 文件等。
我在我的数据库中创建了一个 table,它将存储文件名、扩展名、大小、关于文件的注释和文件数据。文件数据的列类型是 VarBinary
(blob)。
现在,我已经获取了用户的输入并将其存储在我的本地列表视图中(未绑定到数据库)。我想迭代列表视图行并将它们存储到数据库中。我应该如何将文件数据存储到 BLOB 列?
试试这个
// **** Read File/Image into Byte Array from Filesystem
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;
}
然后调用上面的函数添加到数据库
// **** Read Image from Filesystem and add it to the Database.
public void AddFileDataIntoDatabase(
string a,string b,string c, string photoFilePath)
{
// Read Image into Byte Array from Filesystem
byte[] photo = GetPhoto(photoFilePath);
// Construct INSERT Command
SqlCommand addEmp = new SqlCommand(
"INSERT INTO tablename ("+
"col1,col2,Col3,Photo) "+
"VALUES(@col1,@col2,@col3,@Photo)",_conn);
addEmp.Parameters.Add("@col1", SqlDbType.NVarChar, 20).Value = plastName;
addEmp.Parameters.Add("@col2", SqlDbType.NVarChar, 10).Value = pfirstName;
addEmp.Parameters.Add("@col3", SqlDbType.NVarChar, 30).Value = ptitle;
addEmp.Parameters.Add("@Photo", SqlDbType.Image, photo.Length).Value = photo;
// Open the Connection and INSERT the BLOB into the Database
_conn.Open();
addEmp.ExecuteNonQuery();
_conn.Close();
}
SELECT * FROM OPENROWSET(BULK N'<FILEPATH>', SINGLE_BLOB) AS Contents
It'll pull in the contents of the file as varbinary.