C#上传下载文件到sqlserver数据库
时间: 2023-12-01 22:38:51 浏览: 219
在 C# 中,您可以通过以下步骤将文件上传到 SQL Server 数据库,并从数据库中下载文件:
文件上传:
1. 创建一个包含文件选择按钮和上传按钮的窗体界面。
2. 在用户点击上传按钮时,使用 OpenFileDialog 对话框让用户选择要上传的文件。
3. 将选择的文件读取为字节数组(byte[])。
```csharp
byte[] fileBytes;
using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
using (var reader = new BinaryReader(stream))
{
fileBytes = reader.ReadBytes((int)stream.Length);
}
}
```
4. 将字节数组作为参数,使用 SQLCommand 执行 INSERT 语句将文件内容插入到数据库中的相应表和列中。
```csharp
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
var query = "INSERT INTO YourTableName (FileColumn) VALUES (@FileData)";
var command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@FileData", fileBytes);
command.ExecuteNonQuery();
}
```
文件下载:
1. 创建一个窗体界面,包含一个用于输入文件名的文本框和一个下载按钮。
2. 用户在文本框中输入要下载的文件名。
3. 在用户点击下载按钮时,使用 SQLCommand 执行 SELECT 语句,检索数据库中对应文件名的字节数组数据。
```csharp
byte[] fileBytes;
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
var query = "SELECT FileColumn FROM YourTableName WHERE FileName = @FileName";
var command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@FileName", fileName);
fileBytes = (byte[])command.ExecuteScalar();
}
```
4. 将检索到的字节数组保存为文件。
```csharp
using (var stream = new FileStream(savePath, FileMode.Create, FileAccess.Write))
{
using (var writer = new BinaryWriter(stream))
{
writer.Write(fileBytes, 0, fileBytes.Length);
}
}
```
注意替换 `connectionString`、`YourTableName`、`FileColumn`、`FileName`、`filePath`、`savePath` 等参数和变量为您的实际值和变量名。
这是一个基本的示例,您可以根据自己的需求进行扩展和修改。请确保您的数据库表包含适当的列来存储文件内容和文件名。
阅读全文