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();
        }

Refer here

SELECT * FROM OPENROWSET(BULK N'<FILEPATH>', SINGLE_BLOB) AS Contents
It'll pull in the contents of the file as varbinary.