将文件转换为字节数组,保存在 Access-DB 中,从 DB 读取并创建文件

用户7220101

你好,

我正在努力

  1. 将文件转换为字节[]
  2. 在 Access 数据库中写入 byte[]
  3. 从数据库读取字节[]
  4. 从中重新创建文件


1.

byte[] bytes = System.IO.File.ReadAllBytes(@"C:\Users\user\Docs\1.pdf");

2.

AccessConnector.WriteByteArrayToID(122, bytes);

    public static void WriteByteArrayToID(int aID, byte[] aFile)
    {
        conn.Open();
        dbCommand = new OleDbCommand("UPDATE Belege SET Datei = @file WHERE(ID = @ID)", conn);

        dbCommand.Parameters.Add("@ID", OleDbType.Integer).Value = aID;
        dbCommand.Parameters.Add("@file", OleDbType.VarBinary).Value = aFile.ToString();

        dbDataAdapter = new OleDbDataAdapter(dbCommand);
        dbCommand.ExecuteNonQuery();

        conn.Close();
    }

3.

        DataTable table = AccessConnector.GetFileByteArrayByID(122);
        DataRow row = table.Rows[0];

        System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();

        byte[] newbytes = enc.GetBytes(row.ItemArray[0].ToString());

4.

            System.IO.File.WriteAllBytes(@"C:\Users\user\Documents\Docs\a.pdf", newbytes);

问题是, newbytes 比字节小得多,并且新文件不可访问。在 Access DB 单元格中,就像中文字母一样。我已经尝试使用其他编码。没有什么。任何人都可以解释为什么它小得多(23000 个字符到 400 个字符)。谢谢。

更新为其他功能添加了代码

    public static DataTable GetFileByteArrayByID(int aID)
    {
        conn.Open();

        dbCommand = new OleDbCommand("SELECT Datei FROM Belege WHERE (ID = @ID)", conn);

        dbCommand.Parameters.Add("@ID", OleDbType.Integer).Value = aID;
        dbDataAdapter = new OleDbDataAdapter(dbCommand);
        DataTable resultDataTable = new DataTable();
        dbDataAdapter.Fill(resultDataTable);

        conn.Close();
        return resultDataTable;
    }
用户7220101

解决方案

    public static void WriteByteArrayToID(int aID, byte[] aFile)
    {
        conn.Open();

        dbCommand = new OleDbCommand("UPDATE Belege SET Datei = @file WHERE(ID = @ID)", conn);

        string tmp = Convert.ToBase64String(aFile);

        dbCommand.Parameters.Add("@file", OleDbType.VarChar).Value = tmp;
        dbCommand.Parameters.Add("@ID", OleDbType.Integer).Value = aID;

        dbDataAdapter = new OleDbDataAdapter(dbCommand);
        dbCommand.ExecuteNonQuery();

        conn.Close();
    }

    public static DataTable GetFileByteArrayByID(int aID)
    {
        conn.Open();

        dbCommand = new OleDbCommand("SELECT Datei FROM Belege WHERE (ID = @ID)", conn);

        dbCommand.Parameters.Add("@ID", OleDbType.Integer).Value = aID;
        dbDataAdapter = new OleDbDataAdapter(dbCommand);
        DataTable resultDataTable = new DataTable();
        dbDataAdapter.Fill(resultDataTable);

        conn.Close();
        return resultDataTable;
    } 

        //-----------------------------------------------------------------------------------------------------------------

        byte[] bytes = System.IO.File.ReadAllBytes(@"C:\Users\user\Music\1.pdf");

        AccessConnector.WriteByteArrayToID(122, bytes);

        DataTable table = AccessConnector.GetFileByteArrayByID(122);

        string file = table.Rows[0][0] as string;

        System.IO.File.WriteAllBytes(@"C:\Users\user\Documents\Dokumente\a.pdf", Convert.FromBase64String(file));

        //-----------------------------------------------------------------------------------------------------------------

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

给定文件在本地存储中的路径,将文件转换为字节数组?

来自分类Dev

如何将文件转换为内存中的字节数组?

来自分类Dev

无法将更改保存在Realm DB文件中

来自分类Dev

在将文件解析为Java之前将C#中的文件转换为字节数组

来自分类Dev

通过Access DB查询创建多个XML文件

来自分类Dev

将字符串变量中接收的pdf文件转换为C#中的字节数组

来自分类Dev

在Spark中从HDFS或S3读取边缘DB文件

来自分类Dev

将字节数组中的文件写入zip文件

来自分类Dev

将字节数组中的文件写入zip文件

来自分类Dev

将字节数组从Java保存到php中的图像文件

来自分类Dev

如何从字节数组创建文件并将其添加到android中的画廊

来自分类Dev

将Access DB的ACCDB文件导入Sql Server 2014

来自分类Dev

将字节数组转换为图像文件

来自分类Dev

以相反的顺序将文件转换为字节数组

来自分类Dev

将字节数组转换为大块文件

来自分类Dev

如何通过* .sql文件集在Oracle DB中创建表

来自分类Dev

无法在 python 中创建 restaurant.db 文件

来自分类Dev

db seeder文件中的Laravel Route函数

来自分类Dev

如何在.DB文件中查找值?

来自分类Dev

文件wc.db在SVN中的意义

来自分类Dev

在 Cosmos DB 集合中手动创建文档

来自分类Dev

DBAL:将DateTime保存在DB中

来自分类Dev

将textarea的文本保存在db中

来自分类Dev

DBAL:将DateTime保存在DB中

来自分类Dev

以编程方式将 MS Access DB 文件中的子菜单项添加到菜单条

来自分类Dev

将部分表从远程 DB 导入本地 Microsoft Access DB

来自分类Dev

如何将保存在字节数组中的UUID转换为字符串(C ++)

来自分类Dev

将db从资产复制到设备内存中的db文件夹

来自分类Dev

将CSV文件转换为SQLite .db文件

Related 相关文章

  1. 1

    给定文件在本地存储中的路径,将文件转换为字节数组?

  2. 2

    如何将文件转换为内存中的字节数组?

  3. 3

    无法将更改保存在Realm DB文件中

  4. 4

    在将文件解析为Java之前将C#中的文件转换为字节数组

  5. 5

    通过Access DB查询创建多个XML文件

  6. 6

    将字符串变量中接收的pdf文件转换为C#中的字节数组

  7. 7

    在Spark中从HDFS或S3读取边缘DB文件

  8. 8

    将字节数组中的文件写入zip文件

  9. 9

    将字节数组中的文件写入zip文件

  10. 10

    将字节数组从Java保存到php中的图像文件

  11. 11

    如何从字节数组创建文件并将其添加到android中的画廊

  12. 12

    将Access DB的ACCDB文件导入Sql Server 2014

  13. 13

    将字节数组转换为图像文件

  14. 14

    以相反的顺序将文件转换为字节数组

  15. 15

    将字节数组转换为大块文件

  16. 16

    如何通过* .sql文件集在Oracle DB中创建表

  17. 17

    无法在 python 中创建 restaurant.db 文件

  18. 18

    db seeder文件中的Laravel Route函数

  19. 19

    如何在.DB文件中查找值?

  20. 20

    文件wc.db在SVN中的意义

  21. 21

    在 Cosmos DB 集合中手动创建文档

  22. 22

    DBAL:将DateTime保存在DB中

  23. 23

    将textarea的文本保存在db中

  24. 24

    DBAL:将DateTime保存在DB中

  25. 25

    以编程方式将 MS Access DB 文件中的子菜单项添加到菜单条

  26. 26

    将部分表从远程 DB 导入本地 Microsoft Access DB

  27. 27

    如何将保存在字节数组中的UUID转换为字符串(C ++)

  28. 28

    将db从资产复制到设备内存中的db文件夹

  29. 29

    将CSV文件转换为SQLite .db文件

热门标签

归档