FROM语法子句错误

本文关键字:错误 子句 语法 FROM | 更新日期: 2023-09-27 18:09:26

我试图执行这段代码,但我一直得到一个错误在我的查询

string str = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|''Main database.accdb;Jet OLEDB:Database Password=123456";            
OleDbConnection con = new OleDbConnection(str);
string query = "SELECT[Total price],[Parameter change] FROM [Firebird m0 Damage]='" + comboBox6.Text + "' ";
OleDbCommand cmd = new OleDbCommand(query, con);
OleDbDataReader dbr;
try
{
    con.Open();
    dbr = cmd.ExecuteReader();
    while(dbr.Read())
    {
           string me = (string) dbr["[Total price]"];
           textBox15.Text = me;
    }
}
catch(Exception es)
{
    MessageBox.Show(es.Message);
}

我尝试执行这个查询,它也失败了

select * 
from [Total price],[Parameter change] 
where [Firebird m0 Damage]

有什么建议吗?

FROM语法子句错误

您的查询中缺少表名和where子句

string query = "SELECT[Total price],[Parameter change] FROM [TableName] Where [Firebird m0 Damage]='" + comboBox6.Text + "' ";

如果您格式化出您的查询,以使其可读 (感谢c#中的@""字符串)

string query = 
  @"SELECT [Total price],
           [Parameter change]  
      FROM [Firebird m0 Damage]='" + comboBox6.Text + "'"; 

您将看到FROM完全错误的正如DBMS告诉您的那样。也许,你想要这样的东西:

string query = 
  @"SELECT [Total price],
           [Parameter change]  
      FROM [Firebird m0] 
     WHERE [Damage] = '" + comboBox6.Text + "'"; // looks that you want "WHERE"

如果是你的情况,你可以写一个更好的参数化的 SQL

string query = 
  @"SELECT [Total price],
           [Parameter change]  
      FROM [Firebird m0] 
     WHERE [Damage] = ?"; 

,传递comboBox6.Text作为参数

代码是这样的:

...
// Put IDisposable into using
using (OleDbConnection con = new OleDbConnection(str)) {
  con.Open();
  // Make SQL being readable
  string query = 
    @"SELECT [Total price],
             [Parameter change]  
        FROM [Firebird m0] 
       WHERE [Damage] = ?"; 
  // Put IDisposable into using
  using (OleDbCommand cmd = new OleDbCommand(query, con)) {
    cmd.Parameters.Add(comboBox6.Text);
    // Put IDisposable into using
    using (OleDbDataReader dbr = cmd.ExecuteReader()) {
      if (dbr.Read()) // You don't need "while" just "if"
        textBox15.Text = Convert.ToString(dbr["[Total price]"]);
    }
  }
}