简体   繁体   English

c#子查询不起作用

[英]c# subquery not working

I like to add subquery to mysql database, but it gives me error.我喜欢将子查询添加到 mysql 数据库,但它给了我错误。

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 + "')'" + "');";

You are missing a comma. 您缺少逗号。 Add +","+ before your sub-query. 在子查询之前添加+","+

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 + "')'" + "');";

Tip : It would be better to use placeholders in your query along with prepared statements rather than doing this ('" + this.textBoxisbn.Text + "','"... 提示 :最好在查询中使用占位符以及准备好的语句,而不要这样做('" + this.textBoxisbn.Text + "','"...

Make the query readable with a help of verbatim strings and string interpolation : 借助逐字字符串字符串插值使查询可读

   string q = 
     $@"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}'))";

and you'll easily find out all syntax errors in the query. 并且您将轻松找出查询中的所有语法错误。 Further improvement is changing the query into parametrized one: 进一步的改进是将查询更改为参数化查询:

   string q = 
     $@"INSERT INTO table1(
          Isbn,
          Date,
          ID,
          Title) 
        VALUES(
          @prm_Isbn,
          @prm_Date,
          @prm_Id,
          (SELECT Title
             FROM Books
            WHERE Isbn = @prm_IsbnForTitle))";

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM