byte[] byteArray = cargarArchivo(); //Regresa tu archivo como un arreglo de bytes
var command = new SqlCommand("Insert Into Tu_Tabla columna_archivo Values (@archivo)" , sqlConection); // Creamos un SqlCommand que tenga un insert comun, pero apuntando a la columna
command.Parameters.Add("@archivo", SqlDbType.VarBinary, byteArray.Length).Value = byteArray; //Pasamos la referencia del arreglo de bytes
command.ExecuteNonQuery();// Y ejecutamos el query sin retorno
您使用什么版本的 IDE 并不重要,使用 C# 您可以做很多事情,其中您可以选择将文件(PDF 或任何其他)序列化为 Base64 字符串并将其保存为字符串:
using System;
using System.IO;
public class Serializador
{
public static bool GuardarArchivo(string archivo)
{
// Leemos todos los bytes del archivo y luego lo guardamos como Base64 en un string.
string resultado = Convert.ToBase64String(File.ReadAllBytes(archivo));
using (var cn =
new SqlConnection(ConfigurationManager.ConnectionStrings[0].ConnectionString))
{
using(var cmd = cn.CreateCommand())
{
// Se invoca a un StoreProcedure para insertar el registro.
cmd.CommandText = "usp_InsertArchivo";
cmd.CommandType = CommandType.StoreProcedure;
// Con la ayuda de FileInfo devolvemos unicamente el nombre del archivo.
cmd.Parameters.AddWithValue("@nombreArchivo", new FileInfo(archivo).Name);
// El resultado serializado del archivo pasa como un varchar cualquiera.
cmd.Parameters.AddWithValue("@contenido", resultado);
cn.Open();
int cantidad = cmd.ExecuteNonQuery();
// Si es mayor a 0 entonces se guardo correctamente.
return (cantidad > 0);
}
}
}
}
如果可能的话。你有三个选择:
将文件作为类型直接存储在数据库中
Blob
并直接存储二进制文件。将文件直接存储在数据库中,类型为
FileStream
.将文件存储在磁盘上并将文件路径存储在数据库中表的字段中。
经过多次讨论后,每种替代方案都有其优点和缺点。我见过的最推荐的 SQL Server(至少在图像上,但它适用于任何类型的文件)是第二个. 如果你不使用 SQL Server,第二个选项被丢弃,我会推荐第三个,因为它便于文件的维护,数据库不那么重,有问题的分离,它便于测试等。
这里有更多关于它的信息:https ://stackoverflow.com/q/3748/1065197
是的,这是可能的,虽然不推荐
VARBINARY
您可以像在 Sql 中一样声明您的列上传文件的代码或多或少是这样的:
在数据库中处理文件不是一个很好的做法,因为插入和请求比简单文本或其他一些数字类型更昂贵。但如果可能的话。
这个话题在这里用英文谈到,看看;)
您使用什么版本的 IDE 并不重要,使用 C# 您可以做很多事情,其中您可以选择将文件(PDF 或任何其他)序列化为 Base64 字符串并将其保存为字符串:
这里
[ASP.NET] 将文件保存到数据库
我解释了如何将文件插入表中的字段
如您所见,该类型的字段在表中定义,
varbinary
要插入,您必须传递INSERT
一个字节数组作为参数。如果您的应用程序
winforms
非常简单,您只需使用File.ReadAllBytes ()在链接的示例中,有用的代码位于持久层中
在 INSERT 中生成一个参数,允许分配文件的 byte[]
如果将字段定义为 对您没有用,我还建议您进行验证
FileStream
,对于您提到的版本Sql Server
,您可以使用它,并且在数据库中注册文件时更优化。SQL Server 文件流简介
我如何:使用 SQL 文件流