2011-08-13 7 views
0

Visual Studio 2010を使用してmysqlデータベーステーブルに行を追加しようとしていますが、今まで問題はありませんでした。私はエラーを得続ける:パラメータでInsert Intoステートメントを使用すると致命的なエラーが発生する

"Fatal error encountered during command execution."

表構造:

delimiter $$ 

CREATE TABLE `magazine_images` (
    `image_id` int(11) NOT NULL AUTO_INCREMENT, 
    `MagazineKey` int(5) DEFAULT NULL, 
    `image_type` varchar(45) NOT NULL, 
    `image` blob, 
    `image_size` varchar(45) NOT NULL, 
    `image_ctgy` varchar(45) NOT NULL, 
    `image_name` varchar(50) NOT NULL, 
    PRIMARY KEY (`image_id`), 
    KEY `image_magazine` (`MagazineKey`) 
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1$$ 

Cシャープの問合せ:

string image = "INSERT INTO magazine_images (MagazineKey, image, image_type, image_size, image_ctgy, image_name) " + 
        "VALUES(@magkey, @image, @image_type, @image_size, @image_ctgy, @image_name)"; 
      this.cmd = new MySqlCommand(putImage, this.con); 
      this.read = this.cmd.ExecuteReader(); 
      this.read.Read(); 
      this.cmd.Parameters.AddWithValue("@magkey", int.Parse(labelKey.Text)); 
      this.cmd.Parameters.AddWithValue("@image", textBoxImageFile.Text); 
      this.cmd.Parameters.AddWithValue("@image_name", textBoxImageName.Text); 
      this.cmd.Parameters.AddWithValue("@image_type", comboBoxImageType.Text); 
      this.cmd.Parameters.AddWithValue("@image_ctgy", textBoxImageCategory.Text); 
      this.cmd.Parameters.AddWithValue("@image_size", labelImageSize.Text); 
      this.read.Close(); 

答えて

1

どちらかあなたのコードが不完全であるか、あなたが現在あなたのクエリを追加していることを後にパラメータクエリを実行する前に実行する必要があります。

また、image変数を使用していない - 表示していないputImageを使用しています。第3に、ExecuteReader()を使用しないでください。これは検索のみですが、挿入を行っています。そのためにはExecuteNonQuery()が必要です。

要約:&コピーの多くがコピーされているか、またはサンプルに実際のコードが反映されていません。

+0

ああ、私は実行後にパラメータを追加していることに気付かなかった。それをキャッチするために非常にありがとうございます。そして、何らかの理由でコードをコピーしていたときに、「画像」に「putImage」を変更しました。私には睡眠が必要だ。 また、ExecuteReader、ExecuteNonQueryメソッドについて教えてくれてありがとう。私はこの夏C#を学びました。私はまだ学んでいます。 –

関連する問題