把图片文件存入数据库

    技术2022-05-11  55

    把图片文件或别的什么文件存入数据库原理上也不是特别复杂,会把字符串和数值存入数据库就肯定能学会把整个文件也存进数据库。要点就是把文件转换成字节数组存到数据库的Image类型字段里。

    这里介绍两种方法把文件存入数据库,一种用DataSet,另一种不用DataSet。基本方式都一样,看个人喜好了。

    用DataSet来做

    // 将文件转化成流FileStream fs = new FileStream(@"d:/a.jpg",FileMode.OpenOrCreate,FileAccess.Read); byte[] FileData= new byte[fs.Length];fs.Read(FileData,0,System.Convert.ToInt32(fs.Length)); fs.Close();

    // 数据库string strToMDB = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:/x/db1.mdb;Persist Security Info=False;";string strSQL = "select * from img";

    OleDbConnection db = new OleDbConnection(strToMDB); // 创建联接OleDbDataAdapter da = new OleDbDataAdapter(strSQL,db); // 适配器OleDbCommandBuilder cb = new OleDbCommandBuilder(da); // 自动产生SQL语句DataSet ds = new DataSet("MyImg"); // 数据集

    da.Fill(ds,"MyImg"); // 填充数据集

    DataRow tmpRow; // 定义行tmpRow = ds.Tables["MyImg"].NewRow(); // 数据集中增加一行

    tmpRow["Title"]="This is Title."; // 数据行中各个字段赋值tmpRow["Detail"]="This is Detail";tmpRow["FileData"]=FileData;

    ds.Tables["MyImg"].Rows.Add(tmpRow); // 增加这行da.Update(ds,"MyImg"); // 通过适配器递交到数据库

    // 清理资源....

     

    不用DataSet来做:

    FileStream fs = new FileStream(@"c:/a.jpg", FileMode.Open, FileAccess.Read);byte[] data = new byte[fs.Length];fs.Read(data, 0, (int)fs.Length);fs.Close();fs.Dispose();

    SqlConnection db = new SqlConnection(strConn);db.Open();

    string strSQL = "INSERT INTO t_FileBase (FileData,FileSize) values (@data,@size)";SqlCommand cmd = new SqlCommand(strSQL, db);cmd.Parameters.Add("@data", SqlDbType.Image, data.Length);cmd.Parameters["@data"].Value = data;

    cmd.Parameters.Add("@size", SqlDbType.Int);cmd.Parameters["@size"].Value = data.Length;

    cmd.ExecuteNonQuery();

    // 清理资源.... 


    最新回复(0)