C# 如何解决from子句中的语法错误?

C# 如何解决from子句中的语法错误?,c#,sql,ado.net,jet,C#,Sql,Ado.net,Jet,有一个例外 FROM子句中的语法错误 如果它在中明确提到了,那么我猜SQL后端不支持别名(a)。但是,存在多个问题: 别名 sql连接 不必要的适配器 正在读取的列不正确 我建议尝试: string query = "select a.Name,a.Add from GroupDetails a join General b on a.ID=b.Id where b.AccCode='" + label1.text + "'"; OleDbCommand cmd = new OleDbCom

有一个例外

FROM子句中的语法错误


如果它在中明确提到了
,那么我猜SQL后端不支持别名(a
)。但是,存在多个问题:

  • 别名
  • sql连接
  • 不必要的适配器
  • 正在读取的列不正确
我建议尝试:

string query = "select a.Name,a.Add from GroupDetails a join General b on a.ID=b.Id where b.AccCode='" + label1.text + "'";
OleDbCommand cmd = new OleDbCommand(query, con);
OleDbDataAdapter daName = new OleDbDataAdapter(cmd);

OleDbDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{

    txtName.Text = dr["a.Name"].ToString();
    txtAdd.Text = dr["a.Add"].ToString();
}

Add是SQL的关键字,您可以像[Add]一样[]字段

const string query = "select GroupDetails.Name,GroupDetails.Add from GroupDetails join General on GroupDetails.ID=General.Id where General.AccCode=@accCode";

using(var cmd = new OleDbCommand(query, con))
{
    cmd.Parameters.AddWithValue("accCode", label1.text);
    using(var dr = cmd.ExecuteReader())
    {
        txtName.Text = (string)dr["Name"];
        txtAdd.Text = (string)dr["Add"];
    }
}

我确信您的查询不是
SQL Server
,因为它在SQL Server查询窗口中工作正常。它可以是
accesssql
mysql
,您必须明确指定
左连接
右连接
内部连接
。我想您需要
内部联接
在这种情况下:

string query = "select a.Name,a.[Add] from GroupDetails a join General b on a.ID=b.Id where b.AccCode='" + label1.text + "'";

首先要解决的问题是:不要像那样构建SQL。使用参数化SQL。接下来,我看不出这到底是一个C#问题——看起来你只需要修复SQL。你确定它说的是来自的
?不
在哪里
?我能理解的
中的一个错误,
。。。(sql连接)当然,sql后端可能不支持别名(示例中的
a
)-这是连接到什么的?看起来像Access mdb(oledb…?@abhitalks oledb的全部要点是它可以与各种ole db提供程序进行通信SQL命令的处理当然取决于SQL server类型。是MySQL还是MSSQL?在MySQL中,您实际上可以编写
a.Add
,但使用
a.[Add]会出现错误
。在MSSQL中,这是正常的。还测试了:它在
a.[添加]下工作
但不是使用
a.Add
。如果我的答案不正确,很抱歉,因为到目前为止我还没有使用过mysql。@cars10查询不是
SQL Server查询
,而是
Access SQL
。根据我的测试,它在MSSQL2008中不起作用:。我是否忽略了什么?:-/@cars10我不确定,但我测试了原始查询并它工作时没有任何语法错误,
SQL Server
JOIN
理解为
internal JOIN
,而
我的SQL
Access SQL
将其视为错误语法。好吧,我更依赖于
添加
方面…-你每天都会学到新东西;-)因为它的价值。。。
string query = "SELECT a.Name,a.Add FROM GroupDetails a INNER JOIN General b ON a.ID=b.Id WHERE b.AccCode='" + label1.text + "'";