<package id="System.IO.Compression" version="4.3.0" targetFramework="net48" />
<package id="System.IO.Compression.ZipFile" version="4.3.0" targetFramework="net48" />
using Dapper;
using System;
using System.Data.SQLite;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Windows.Forms;
namespace 文件存储Sqlite
{
public partial class Form1 : Form
{
public string connectionStr = "data source=D:\\test\\sqlitedb.db";
public Form1()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
using (var conn = new SQLiteConnection(connectionStr))
{
var ds = conn.Query<User>("select * from User");
dataGridView1.DataSource = ds;
}
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog()
{
Multiselect = true,
};
openFileDialog.ShowDialog();
var dir = AppDomain.CurrentDomain.BaseDirectory + "tmp\\";
Directory.CreateDirectory(dir);
var files = openFileDialog.FileNames;
foreach (var file in files)
{
File.Copy(file, dir + Path.GetFileName(file));
}
var targetZip = Path.GetFileNameWithoutExtension(AppDomain.CurrentDomain.BaseDirectory + files.First()) + ".zip";
ZipFile.CreateFromDirectory(dir, targetZip);
using (var conn = new SQLiteConnection(connectionStr))
{
var ds = conn.Query<User>("select * from User");
var sql = "UPDATE User set File=@file where ID=@id";
DynamicParameters pars = new DynamicParameters();
pars.Add("file", File.ReadAllBytes(targetZip));
pars.Add("id", ds.First().ID);
conn.Execute(sql, pars);
}
Directory.Delete(dir, true);
MessageBox.Show("ZipOver");
}
private void button3_Click(object sender, EventArgs e)
{
using (var conn = new SQLiteConnection(connectionStr))
{
var ds = conn.QuerySingle<User>("select * from User where ID=2");
File.WriteAllBytes(AppDomain.CurrentDomain.BaseDirectory + "数据库读取到的文件.zip", ds.File);
}
ZipFile.ExtractToDirectory(AppDomain.CurrentDomain.BaseDirectory + "数据库读取到的文件.zip", AppDomain.CurrentDomain.BaseDirectory + "数据库读取到的文件");
MessageBox.Show("UnZipOver");
}
}
public class User
{
public int ID { get; set; }
public byte[] File { get; set; }
public string Name { get; set; }
}
}
https://download.csdn.net/download/iml6yu/87060041
using System;
using System.IO.Compression;
class Program
{
static void Main(string[] args)
{
string startPath = @".\start";
string zipPath = @".\result.zip";
string extractPath = @".\extract";
ZipFile.CreateFromDirectory(startPath, zipPath);
ZipFile.ExtractToDirectory(zipPath, extractPath);
}
}
CreateFromDirectory(String, String)
创建 zip 存档,该存档包含指定目录的文件和目录。
CreateFromDirectory(String, String, CompressionLevel, Boolean)
创建 zip 存档,该存档包括指定目录的文件和目录,使用指定压缩级别,以及可以选择包含基目录。
CreateFromDirectory(String, String, CompressionLevel, Boolean, Encoding)
创建 zip 存档,该存档包括文件和指定目录的目录,使用指定压缩级别和条目名称的字符编码,以及可以选择包含基目录。
ExtractToDirectory(String, String)
将指定 zip 存档中的所有文件都解压缩到文件系统的一个目录下。
ExtractToDirectory(String, String, Boolean)
将指定存档中的所有文件都解压缩到文件系统的某目录下。
ExtractToDirectory(String, String, Encoding)
将指定 zip 存档中的所有文件解压缩到文件系统的一目录下,并使用项名称的指定字符编码。
ExtractToDirectory(String, String, Encoding, Boolean)
将指定存档中的所有文件都解压缩到文件系统的某目录下。
Open(String, ZipArchiveMode)
以指定的模式打开指定路径上的 zip 归档。
Open(String, ZipArchiveMode, Encoding)
在指定的模式中用指定的项名称汉字解码打开指定路径的 zip 存档。
OpenRead(String)
打开在指定路径用于读取的 zip 存档。
https://learn.microsoft.com/zh-cn/dotnet/api/system.io.compression.zipfile?view=net-7.0