动态SQL错误SQL错误代码= -104令牌未知

时间:2017-11-19 11:06:07

标签: c# sql firebird

这是错误:

Dynamic SQL Error    
SQL error code = -104    
Token unknown - line 1, column 162    
VALUE

以下是代码:

using (FbDataAdapter da = new FbDataAdapter(@"SELECT DOC_ITEMS.ID, PRODUCTS.PRODUCTKEY, PRODUCTS.NAME, DOC_ITEMS.QUANTITY, UNITS.UNIT, DOC_ITEMS.PRICE, DOC_ITEMS.TAX, (DOC_ITEMS.PRICE * DOC_ITEMS.QUANTITY) AS VALUE
                        FROM PRODUCTS INNER JOIN
                        DOC_ITEMS ON PRODUCTS.PRODUCTID = DOC_ITEMS.PRODUCTID INNER JOIN
                        UNITS ON PRODUCTS.UNITID = UNITS.UNITID
                        WHERE (DOC_ITEMS.DOCUMENTID = @DocumentID)", con))

{
    da.SelectCommand.Parameters.AddWithValue("@DocumentID", documentId);

    DataTable dt = new DataTable();
    da.Fill(dt);
    dataGridView1.DataSource = dt;

    dataGridView1.Columns["PRODUCTKEY"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
    dataGridView1.Columns["ID"].Visible = false;
    dataGridView1.Columns["NAME"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
    dataGridView1.Columns["QUANTITY"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
    dataGridView1.Columns["QUANTITY"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
    dataGridView1.Columns["UNIT"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
    dataGridView1.Columns["PRICE"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
    dataGridView1.Columns["PRICE"].DefaultCellStyle.Format = "0.00 $";
    dataGridView1.Columns["TAX"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
    dataGridView1.Columns["TAX"].DefaultCellStyle.Format = "0\\%";
    dataGridView1.Columns["VALUE"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
    dataGridView1.Columns["VALUE"].DefaultCellStyle.Format = "0.00 $";
}

当我通过我的数据库直接运行此命令时,它正常工作,但在我的c#代码中,它会丢失此错误。

3 个答案:

答案 0 :(得分:1)

""VALUE""与双引号一起使用,因为一个引号将关闭您的字符串。

答案 1 :(得分:1)

VALUE是Firebird中的reserved word,这意味着它无法在查询中用作对象名称。您需要使用不同的名称,或者明确地将其引用为"VALUE",因此查询解析器知道它不是保留字。

答案 2 :(得分:0)

我试图在我的Interbase数据库中创建一个表。

  

动态SQL错误   SQL错误代码= -104   意外的命令结束

这是我的表:

CREATE TABLE Medecin(
    Code Integer ,
    Nom varchar(30) ,
    prénom varchar(30) ,
    spécialité varchar(30) ,
    Adresse varchar(50) ,
    telephone varchar(14)
);

这里有什么问题?