我已通过将文件转换为字节将文件保存在数据库中。它已成功保存,但无法检索。
这是我用来转换和保存的代码:
public static void databaseFilePut(string varFilePath)
{
byte[] file;
using (var stream = new FileStream(varFilePath, FileMode.Open, FileAccess.Read))
{
using (var reader = new BinaryReader(stream))
{
file = reader.ReadBytes((int)stream.Length);
}
}
using (SqlConnection varConnection = new SqlConnection("Data Source=FARHANB;Initial Catalog=save;Integrated Security=True"))
using (var sqlWrite = new SqlCommand("INSERT INTO Raporty (RaportPlik) Values(@File)", varConnection))
{
varConnection.Open();
sqlWrite.Parameters.Add("@File", SqlDbType.VarBinary, file.Length).Value = file;
sqlWrite.ExecuteNonQuery();
varConnection.Close();
}
}
我正在使用以下代码从数据库中检索它:
public static void databaseFileRead(string varID, string varPathToNewLocation)
{
using (SqlConnection varConnection = new SqlConnection("Data Source=FARHANB;Initial Catalog=save;Integrated Security=True"))
using (var sqlQuery = new SqlCommand(@"SELECT [RaportPlik] FROM [dbo].[Raporty] WHERE [RaportID] = @varID", varConnection))
{
varConnection.Open();
sqlQuery.Parameters.AddWithValue("@varID", varID);
using (var sqlQueryResult = sqlQuery.ExecuteReader())
if (sqlQueryResult != null)
{
sqlQueryResult.Read();
var blob = new Byte[(sqlQueryResult.GetBytes(0, 0, null, 0, int.MaxValue))];
sqlQueryResult.GetBytes(0, 0, blob, 0, blob.Length);
using (var fs = new FileStream(varPathToNewLocation, FileMode.Create, FileAccess.Write))
fs.Write(blob, 0, blob.Length);
varConnection.Close();
}
}
}
OR
public static void databaseFileRead(string varID, string varPathToNewLocation)
{
using (SqlConnection varConnection = new SqlConnection("Data Source=FARHANB;Initial Catalog=save;Integrated Security=True"))
using (var sqlQuery = new SqlCommand(@"SELECT [RaportPlik] FROM [dbo].[Raporty] WHERE [RaportID] = @varID", varConnection))
{
varConnection.Open();
sqlQuery.Parameters.AddWithValue("@varID", varID);
using (var sqlQueryResult = sqlQuery.ExecuteReader())
if (sqlQueryResult != null)
{
sqlQueryResult.Read();
var blob = new Byte[(sqlQueryResult.GetBytes(0, 0, null, 0, int.MaxValue))];
sqlQueryResult.GetBytes(0, 0, blob, 0, blob.Length);
using (var fs = new FileStream(varPathToNewLocation, FileMode.Create, FileAccess.Write))
fs.Write(blob, 0, blob.Length);
}
varConnection.Close();
}
}
我已经两个代码块一个接一个地使用了,但是它们都不起作用。
Link One(Original) Link Two(Modification)
首先,我在
中遇到了问题using (var varConnection = Locale.sqlConnectOneTime(Locale.sqlDataConnectionDetails))
所以我将其更改为sqlconnection
。它成功保存了字节,所以我不认为问题出在这里。
我遇到的第二个问题是“访问被拒绝”。我遇到了访问被拒绝的错误,因此我通过将文件保存在bin项目中来解决了这个问题。
现在没有错误,但是指定的文件夹中也没有文件。
这是我在方法中传递的引用。
databaseFileRead("1",@"\here");
我该怎么办?请指导我,我是数据库的新手。
谢谢
答案 0 :(得分:0)
这是路径的问题。 我做错了 这是解决方案
databaseFileRead("1",@"here\filename");