這篇文章主要介紹了C#實現文件與二進制互轉並存入數據庫,本文直接給出代碼實例,代碼中包含詳細註釋,須要的朋友能夠參考下數據庫
//這個方法是瀏覽文件對象
private
void
button1_Click(
object
sender, EventArgs e)
{
//用戶打開文件瀏覽
using
(OpenFileDialog dialog =
new
OpenFileDialog())
{
//只能單選一個文件
dialog.Multiselect =
false
;
//選擇一個文件
if
(dialog.ShowDialog() == DialogResult.OK)
{
try
{
//把選擇的文件路徑給txtPath
this
.textBox1.Text = dialog.FileName;
}
catch
(Exception ex)
{
//拋出異常
throw
(ex);
}
}
}
}
//關閉
private
void
button3_Click(
object
sender, EventArgs e)
{
this
.Close();
}
//把文件轉成二進制流出入數據庫
private
void
button2_Click(
object
sender, EventArgs e)
{
FileStream fs =
new
FileStream(textBox1.Text, FileMode.Open);
BinaryReader br =
new
BinaryReader(fs);
Byte[] byData = br.ReadBytes((
int
)fs.Length);
fs.Close();
string
conn =
"server=.;database=testDB;Uid=sa;Pwd=sa "
;
SqlConnection myconn =
new
SqlConnection(conn);
myconn.Open();
string
str =
"insert into pro_table (pro_name,pro_file) values('測試文件',@file)"
;
SqlCommand mycomm =
new
SqlCommand(str, myconn);
mycomm.Parameters.Add(
"@file"
, SqlDbType.Binary, byData.Length);
mycomm.Parameters[
"@file"
].Value = byData;
mycomm.ExecuteNonQuery();
myconn.Close();
}
//從數據庫中把二進制流讀出寫入還原成文件
private
void
button4_Click(
object
sender, EventArgs e)
{
string
conn =
"server=.;database=testDB;Uid=sa;Pwd=sa "
;
string
str =
"select pro_file from pro_table where pro_name='測試文件' "
;
SqlConnection myconn =
new
SqlConnection(conn);
SqlDataAdapter sda =
new
SqlDataAdapter(str, conn);
DataSet myds =
new
DataSet();
myconn.Open();
sda.Fill(myds);
myconn.Close();
Byte[] Files = (Byte[])myds.Tables[0].Rows[0][
"pro_file"
];
BinaryWriter bw =
new
BinaryWriter(File.Open(
"D:\\2.rdlc"
,FileMode.OpenOrCreate));
bw.Write(Files);
bw.Close();
}