【问题标题】:C# SQL Server CE binary data recoveryC# SQL Server CE 二进制数据恢复
【发布时间】:2015-12-24 23:41:16
【问题描述】:

我正在尝试在 SQL Server CE 本地数据库中保存和读回 pdf 文件。我能够将它们作为二进制数据保存在 Image 列中,但我不知道如何读回它们并打开 pdf 文件(原始格式)。

Table Schema

这是我存储 PDF 文件的方式:

try
{
    SqlCeConnection con = new SqlCeConnection(@"Data Source = D:\C# Projects\StoreFileSqlCe\StoreFileSqlCe\Test_File_Stotage.sdf");
    con.Open();

    string filePath = textBox1.Text.ToString();
    string filename = Path.GetFileName(filePath);

    FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);

    BinaryReader br = new BinaryReader(fs);
    Byte[] bytes = br.ReadBytes((Int32)fs.Length);
    br.Close();

    fs.Close();

    string strQuery = "insert into tblFiles(Name, ContentType, Data) values (@Name, @ContentType, @Data)";

    SqlCeCommand cmd = new SqlCeCommand(strQuery, con);
    cmd.Parameters.AddWithValue("@Name", filename);
    cmd.Parameters.AddWithValue("@ContentType", "application/vnd.ms-word");
    cmd.Parameters.AddWithValue("@Data",bytes);

    cmd.ExecuteNonQuery();
}            }
catch (Exception ex)
{
    MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
    con.Close();
    con.Dispose();
}

【问题讨论】:

    标签: c# pdf sql-server-ce filestream binaryreader


    【解决方案1】:

    试试这个

                try
                {
    
                    SqlCeConnection con = new SqlCeConnection(@"Data Source = D:\C# Projects\StoreFileSqlCe\StoreFileSqlCe\Test_File_Stotage.sdf");
                    con.Open();
    
                    string strQuery = "select Data where Name = @Name and ContentType = @ContentType";
                    SqlCeCommand cmd = new SqlCeCommand(strQuery, con);
    
                    cmd.Parameters.AddWithValue("@Name", filename);
    
                    cmd.Parameters.AddWithValue("@ContentType", "application/vnd.ms-word");
    
    
                    SqlCeDataReader reader = cmd.ExecuteReader();
                    if (reader != null)
                    {
                        if (reader.Read())
                        {
    
                            byte[] pdf = (byte[])reader["Data"];
                            File.WriteAllBytes(filename, pdf);
    
                        }
                    }
                }
    
    ​
    

    【讨论】:

      猜你喜欢
      • 2015-01-08
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-25
      • 1970-01-01
      相关资源
      最近更新 更多