开发者

BLOB in MySQL with DataSet in C#

I would like to insert a PDF file in a MySQL database, in a blob.

Here is the code I'm using to insert (I use a WebService and a 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);
}

When I want to get and create the original file with which is in my blob, it seems to work well. But when I want to open my new PDF file, Adobe indicates that the file is not supported or is corrupted ...

Here is the code I'm using to get information from my blob. I receive informations in a DataSet (_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();

How do I fix this problem? I think the problem is where I insert, because I can see 13o in my blob.


I had to use a parameterized request :

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();
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜