请教怎么在C#中向sqlite数据库保存文件,比如我要上传一个*.xls文件到sqlite表里,该如何实现?

解决方案 »

  1.   

    Sqlite数据库里指定数据类型为:Blob。在数据访问指定参数类型为:DbType.Binary然后把Excel文件读到字节数组里。        using(FileStream file = File.Open(this.TextBox2.Text,FileMode.Open))
            {        
                byte[] bytes = new byte[file.Length];
                file.Read(bytes, 0, Convert.ToInt32(file.Length));
                testDal.Insert(Guid.NewGuid().ToString(), bytes, null);
            }数据访问存储字节数据。
    public Int32 Insert(string ID,Byte[] fileStream, SQLiteTransaction trans)
            {
                if (conn.State == ConnectionState.Closed)
                {
                    conn.Open();
                }
                SQLiteCommand command;
                if (trans == null)
                {
                    command = new SQLiteCommand("insert into test(ID,excelText) values (:ID,:excelText)", conn);
                }
                else
                {
                    command = new SQLiteCommand("insert into test(ID,excelText) values (:ID,:excelText)", conn, trans);
                }
                command.Parameters.Add("ID", DbType.String);
                command.Parameters.Add("excelText", DbType.Binary);            command.Parameters["ID"].Value = ID;
                command.Parameters["excelText"].Value = fileStream;
                try
                {
                    return command.ExecuteNonQuery();
                }
                catch
                {
                    return 0;
                }
            }
    根据主键返回Excel的字节数据
            public byte[] GetExcel(string ID)
            {
                if (conn.State == ConnectionState.Closed)
                {
                    conn.Open();
                }
                SQLiteCommand command = new SQLiteCommand("Select excelText from test where ID = :ID", conn);
                command.Parameters.Add("ID", DbType.String);
                command.Parameters["ID"].Value = ID;            SQLiteDataReader dr = null;            dr = command.ExecuteReader();            byte[] File = null;
                if (dr.Read())
                {
                    File = (byte[])dr[0];
                }
                return File;
            }把字节数据存储为文件
            using (FileStream fs = File.Create("D:\\Test.xls"))
            {
                fs.Write(file, 0, file.Length);
                fs.Close();
            }