2016-09-16 9 views
-2

イメージが格納されたデータベースがあり、そのイメージを新しいイメージに置きたいと思います。ここには事があります:私はpictureboxを持っていて、この絵の箱に私はイメージをダウンロードしています。このイメージは私の列 "Id"が6の私のdatabaserowの現在のイメージを置き換えるために使用したいイメージです。 今私はUPDATEでそれをしようとしていますが、それは動作していません。ここに私のコードは次のとおりです。データベース内のイメージをc#(UPDATEを使用)に置き換える

 private void buttonReplace_Click(object sender, EventArgs e) 
    { 
     string sql = "SELECT * FROM [Insert_Image]"; //name of database 
     SqlDataAdapter dA = new SqlDataAdapter(sql, cn); 
     DataTable dT = new DataTable(); 
     dA.Fill(dT); 
     int z = dT.Rows.Count + 1; 
     int i = 6; 

     try 
     { 
      cn.Open(); 
      byte[] img = null; 
      FileStream fs = new FileStream(imgLoc, FileMode.Open, FileAccess.Read); 
      BinaryReader br = new BinaryReader(fs); 
      img = br.ReadBytes((int)fs.Length); 

      string strSql = "UPDATE [Insert_Image] SET Picture = " + @img + " WHERE Id LIKE '" + i + "'"; 
      SqlCommand cmd = new SqlCommand(strSql, cn); 

      cmd.ExecuteNonQuery(); 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(Convert.ToString(ex)); 
     } 
     finally 
     { 
      cn.Close(); 
     } 
    } 

私の問題は、何かが私のデータベースに保存されていることですが、私はこのコードを保存していますどのようなことは、画像用のバイナリ・コードではありません。私はファイルストリームをチェックしました。これは、私がピクチャボックスへのアップロードに使用したのと同じファイルストリームを使用しているので正しいです。私はどんな助けやアイデアにもとてもうれしいです。

+0

我々はより多くの情報が必要としています。初心者のためのデータベーススキーマは何ですか? – JimNicholson

+0

SQLパラメタについて読む。あなたのやり方は、例えばバイナリデータでは間違っています。コードに最適な決定もほとんどありません –

+0

私のデータベースにはId(主キー)とPictureの2つの列があります。 今私はこのデータベースに10行あり、6行目には新しいものと置き換えたい画像があります。 – MaChaToc

答えて

2

クエリでハードコード値を使用しないでください。

 cmd.Parameters.Addnew SqlParameter("@img", img)); 

チェックこのcheet sheet on SQL Injection

 string strSql = "UPDATE [tablename] SET [email protected] WHERE Id LIKE '%@i%'"; 

     SqlCommand cmd = new SqlCommand(strSql, cn); 
     cmd.Parameters.Add(new SqlParameter("@img", img)); 
     cmd.Parameters.Add(new SqlParameter("@i", i)); 
     cmd.ExecuteNonQuery(); 
+0

私の答えは、2つの主な問題点を指摘していました。それがあなたのために働くかどうか確認できますか? – srini

+0

それは動作しませんでしたが、以前と同じ結果でした – MaChaToc

+0

IDが主キーである理由 "LIKE" "+ i +" '""を使用する理由は、ID 6の行を更新することになります。 * 6 *(16,26,66)何かを使用する必要があります。Id = @i – srini

関連する問題