簡體   English   中英

C#MySQL Blob字段 - 無法將存儲在blob中的zip文件復制到另一個表中

[英]C# MySQL Blob field - Cannot copy zip file stored in blob to another table

我有一個由第三方應用程序存儲在表格中的zip文件,我無法控制。 但我可以訪問MySQL DB。

我想做的是做一個SELECT語句來檢索blob字段並將此記錄復制到另一個表中。 但另一方面,我確實看到了遠端的blob字段,但它不是一個zip文件,它是一個文本文件,說System.Byte [],就是這樣 - 任何人都有任何想法導致這個以及如何修理它?

繼承人我的下面 - 再次任何幫助非常感謝:)

OdbcCommand broadcastSelect = new OdbcCommand("select * from exchange where status='1' and type='UPDATE'", cloud);
                OdbcDataReader DbReader = Select.ExecuteReader();
                int fCount = DbReader.FieldCount;
                String type = "";
                String filename = "";
                byte[] data = null;
                int status = 0;

                while (DbReader.Read())
                {
                    if (DbReader.IsDBNull(0))
                    {
                        type = "BLANK";
                    }
                    else
                    {
                        type = (string)DbReader[0];
                    }
                    if (DbReader.IsDBNull(1))
                    {
                        filename = "BLANK";
                    }
                    else
                    {
                        filename = (string)DbReader[1];
                    }
                    if (DbReader.IsDBNull(2))
                    {
                        data = new byte[1];
                    }
                    else
                    {
                        data = (byte[])DbReader[2];
                    }
                    if (DbReader.IsDBNull(3))
                    {
                        status = 0;
                    }
                    else
                    {
                        status = (int)DbReader[3];
                    }

                    OdbcCommand Copy = new OdbcCommand("INSERT INTO exchange(type,filename,data,status) VALUES('" + type + "','" + filename + "','"
                        + data + "','" + status + "')", local);
                    Copy.ExecuteNonQuery();

                }

使用sql參數插入二進制數據。

OdbcParameter param = new OdbcParameter("@file", SqlDbType.Binary); 

---更新我希望下面給出的代碼對你有所幫助。

 OdbcCommand broadcastSelect = new OdbcCommand("select * from exchange where status='1' and type='UPDATE'", cloud);
        OdbcDataReader DbReader = Select.ExecuteReader();
        int fCount = DbReader.FieldCount;
        String type = "";
        String filename = "";
        byte[] data = null;
        int status = 0;
        OdbcParameter param = null;
        while (DbReader.Read())
        {
            if (DbReader.IsDBNull(0))
            {
                type = "BLANK";
            }
            else
            {
                type = (string)DbReader[0];
            }
            if (DbReader.IsDBNull(1))
            {
                filename = "BLANK";
            }
            else
            {
                filename = (string)DbReader[1];
            }
            if (DbReader.IsDBNull(2))
            {
                param = new OdbcParameter("@file", SqlDbType.Binary);
                param.DbType = DbType.Binary;
                param.Value = new byte[1];                
                command.Parameters.Add(param); 
            }
            else
            {
                param = new OdbcParameter("@file", SqlDbType.Binary);
                param.DbType = DbType.Binary;
                param.Value = (byte[])dbReader[2];
                param.Size = ((byte[])dbReader[2]).Length; 
                command.Parameters.Add(param); 
            }
            if (DbReader.IsDBNull(3))
            {
                status = 0;
            }
            else
            {
                status = (int)DbReader[3];
            }

            OdbcCommand Copy = new OdbcCommand("INSERT INTO exchange(type,filename,data,status) VALUES('" + type + "','" + filename + "',@file,'" + status + "')", local);
            Copy.ExecuteNonQuery();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM