BLOB в MySQL с набором данных в C # - PullRequest
4 голосов
/ 31 мая 2011

Я хотел бы вставить PDF-файл в базу данных MySQL, в blob .

Вот код, который я использую для вставки (я использую WebService и DataSet):

FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Read);

byte[] MyData = new byte[fs.Length];
fs.Read(MyData, 0, System.Convert.ToInt32(fs.Length));

fs.Close();

this._requete = "INSERT INTO stage_abstract(etuid, anac, pdf)
                 VALUES (" + 6 + ", " + 2009 + ", \"" + MyData + "\")";

int suc = 0;
using (this._ds)
{
    suc = this._dbo.InsertUpdateDelete(ws, this._requete);
}

Когда я хочу получить и создать оригинальный файл, который находится в моем BLOB-объекте, он, кажется, работает хорошо. Но когда я хочу открыть свой новый файл PDF, Adobe указывает, что файл не поддерживается или поврежден ...

Вот код, который я использую для получения информации от моего блоба. Я получаю информацию в наборе данных (_ds):

this._requete = "SELECT stage_abstract.pdf as pdf
                 FROM stage_abstract
                 WHERE stage_abstract.etuid = " + 6 + "
                   AND stage_abstract.anac = " + 2009;

using (this._ds)
{
    this._ds = this._dbo.select(this.ws, this._requete);
}

byte[]  MyData = (byte[]) this._ds.Tables[0].Rows[0]["pdf"];
int ArraySize = new int();
ArraySize = MyData.GetUpperBound(0);

FileStream fs = new FileStream(@"C:\essairecup.pdf"
                     , FileMode.OpenOrCreate, FileAccess.Write);
fs.Write(MyData, 0, ArraySize);
fs.Close();

Как мне исправить эту проблему? Я думаю, проблема в том, куда я вставляю, потому что я вижу 13o в моем BLOB-объекте.

1 Ответ

2 голосов
/ 01 июня 2011

Мне пришлось использовать параметризованный запрос:

int tfeid = 222;
        string fileName = "myFile";
        string fullFileName = @"C:\myFile.pdf";

        FileStream fs = new FileStream(fullFileName, FileMode.OpenOrCreate, FileAccess.Read);
        byte[] MyData = new byte[fs.Length];
        fs.Read(MyData, 0, System.Convert.ToInt32(fs.Length));
        fs.Close();

        DbProviderFactory MFactory = DbProviderFactories.GetFactory("MySql.Data.MySqlClient");
        DbConnection Mconnect = MFactory.CreateConnection();
        Mconnect.ConnectionString = ConfigurationManager.ConnectionStrings["ConnexionMySql"].ConnectionString;
        Mconnect.Open();
        DbCommand Mcommand = Mconnect.CreateCommand();
        Mcommand.CommandText = "UPDATE tfe_abstract SET pdf = ?paramImg, pdfnom = \"" + fileName + "\" WHERE tfeid = " + tfeid;

        DbParameter parametre = Mcommand.CreateParameter();
        parametre.ParameterName = "paramImg";
        parametre.Value = MyData;
        Mcommand.Parameters.Add(parametre);

        int result = Mcommand.ExecuteNonQuery();

        Mconnect.Close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...