2017-08-10 15 views
0

状況: 私はデータベースから画像を取得し、それをpictureboxに配置しようとしています。データベースはBLOB型です。私は私に与えられた方法を試みた(How to retrieve image from database and paste to picturebox?)、そして悲しいことに何も働かなかった。 BLOBの代わりに、私はstringを使用して画像のフルパスを取得することにしました。Get Full Pathからスラッシュは削除されましたか?

問題:スラッシュが消えています。 Database example

コード:

private void pbox1_Click(object sender, EventArgs e) 
    { 
     OpenFileDialog rest = new OpenFileDialog(); 

     rest.Filter = "images| *.JPG; *.PNG; *.GIF"; 

     if (rest.ShowDialog() == DialogResult.OK) 
     { 
      pbox1.Image = Image.FromFile(rest.FileName); 

      filename = Path.GetFullPath(rest.FileName); 

     } 

    } 

私は( "ファイル名は" グローバル変数である)データベースに挿入:

MySqlCommand comm = new MySqlCommand("INSERT INTO casestudyprofile(lastname, firstname, birthdate, status, caseage, program, dateJoined, picture, address) VALUES('" + lname + "', '" + fname + "', '" + dtbirth.Value.Date.ToString("yyyyMMdd") + "','" + status + "','" + age + "','" + program + "','" + dtjoin.Value.Date.ToString("yyyy/MM/dd") + "', '" + filename + "', '" + address + "')", conn); 

は、その後、私はこのようにそれを呼び出す:

pbox2.ImageLocation = dt.Rows[0]["picture"].ToString(); 

データベースに格納されているフルパスにはスラッシュが削除されているため、動作しないことがわかりました。私はそれらを手動でデータベースに入れ、それが機能しました。しかし、どのようにコードですか?どんな助けでも大歓迎です。

+4

あなたのコードは脆弱です。クエリを連結しないでください。 https://stackoverflow.com/questions/7505808/why-do-we-always-prefer-using-parameters-in-sql-statementsにはおそらくあなたの問題に関係するものがあるかもしれません。 – Will

+0

は 'GetFullPath'メソッドが返すものを検査します。また、グローバル変数 'filename'を避け、パラメータを使用してクエリに値を注入します。 – tchelidze

+3

バックスラッシュをエスケープする必要があります。 https://dev.mysql.com/doc/refman/5.7/en/string-literals.html – Harsh

答えて

0

filename = Path.GetFullPath(rest.FileName).Replace( "\"、 "\\");

+0

申し訳ありませんが答える前に厳しいのコメントが表示されませんでした – Artemis

+0

それはいいです。コードは現在動作します。ありがとうございました! –

関連する問題