Я получаю фатальную ошибку при использовании оператора Insert Into с параметрами - PullRequest
0 голосов
/ 14 августа 2011

Я пытаюсь добавить строку в таблицу базы данных mysql с помощью Visual Studio 2010, и до сих пор у меня не было проблем.Я получаю сообщение об ошибке:

«Неустранимая ошибка при выполнении команды.»

Структура таблицы:

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 Запрос Sharp:

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 Ответ

1 голос
/ 14 августа 2011

Либо ваш код неполон, либо вы в настоящее время добавляете параметры запроса после , когда вы выполняете запрос - вы должны сделать это до того, как запрос будет выполнен.

Также вы даже не используетепеременная image - вы используете putImage, который вы не показали.В-третьих, вы не должны использовать ExecuteReader() - это только для извлечения, но вы делаете вставку, для этого вам нужно ExecuteNonQuery().

В итоге: либо у вас много ошибок копирования и вставки, либоВаш образец не отражает ваш реальный код.

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