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]
有什么建议吗?
您的查询中缺少表名和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]"]);
}
}
}