2017-01-28 4 views
0

Мне нравится добавлять подзапросы в базу данных mysql, но это дает мне ошибку.C# подзапрос теперь работает

string q = "INSERT INTO table1(isbn,date,ID,title) 
values('" + this.textBoxisbn.Text + "','" + this.dateTimePicker1.Value.ToString("yyyy-MM-dd") + "','" + this.textBoxk.Text + "'(select title from books where isbn=" + textBox1.Text + "')'" + "');"; 
+0

Можете ли вы отправить сообщение об ошибке также? – mindOfAi

+3

запятая отсутствует перед подзапросом –

+3

Вам не хватает запятой, возможно, кавычки, но в стороне вы должны использовать подготовленные инструкции, которые автоматически обрабатывали бы многие из этих вещей для вас. –

ответ

0

Вам не хватает запятой. Добавьте +","+ перед вашим подзапросом.

string q = "INSERT INTO table1(isbn,date,ID,title) 
values('" + this.textBoxisbn.Text + "','" + 
this.dateTimePicker1.Value.ToString("yyyy-MM-dd") + "','" + 
this.textBoxk.Text + "','" + "'(select title from books 
where isbn=" + textBox1.Text + "')'" + "');"; 

Совет: Было бы лучше использовать заполнители в запросе наряду с подготовленными операторами, а не делать это ('" + this.textBoxisbn.Text + "','"...

+0

вы можете переписать запрос с помощью заполнителей? –

0

Сделать запрос читаемый с помощью стенографических строк и струйная интерполяция:

string q = 
    [email protected]"INSERT INTO table1(
      Isbn, 
      Date, 
      ID, 
      Title) 
     VALUES(
      '{textBoxisbn.Text}', 
      '{dateTimePicker1.Value.ToString("yyyy-MM-dd")}', 
      '{textBoxk.Text}', 
      (SELECT Title 
      FROM Books 
      WHERE Isbn = '{textBox1.Text}'))"; 

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

string q = 
    [email protected]"INSERT INTO table1(
      Isbn, 
      Date, 
      ID, 
      Title) 
     VALUES(
      @prm_Isbn, 
      @prm_Date, 
      @prm_Id, 
      (SELECT Title 
      FROM Books 
      WHERE Isbn = @prm_IsbnForTitle))"; 
Смежные вопросы