'fieldlist'中的未知列'列名'

时间:2013-12-06 11:18:13

标签: c#

我正在尝试在no.ofTrips中选择我的专栏tbl_bill_addtrips 但每当我点击按钮时,确定。出现“字段列表”中的未知列“no.ofTrips”。 这是我的示例代码

try
    {
        string MyConSs = "SERVER=localhost;" +
         "DATABASE=prototype_db;" +
         "UID=root;";

        MySqlConnection conns = new MySqlConnection(MyConSs);
        MySqlCommand comms = conns.CreateCommand();
        MySqlDataAdapter da = new MySqlDataAdapter();

        comms.CommandText = "Select no.ofTrips FROM tbl_bill_addtrips WHERE RouteFrom = '" + this.txtBillRouteFrom.Text + "' and RouteTo ='" + txtBillRouteTo.Text + "'";
        MySqlDataReader Readers;
        conns.Open();
        Readers = comms.ExecuteReader();
        while (Readers.Read())
        {
            txtNoOfTrips.Text = Readers.GetValue(0).ToString();
        }
        Readers.Close();
        conns.Close();
    }
    catch (Exception error)
    {
        MessageBox.Show(error.ToString());
    }

请提前帮助我

4 个答案:

答案 0 :(得分:1)

如果您的列名确实包含.,那么您需要将其包装在括号中:

Select [no.ofTrips] FROM tbl_bill_addtrips WHERE RouteFrom ...
//     ^          ^

或者MySQL的反击:

Select `no.ofTrips` FROM tbl_bill_addtrips WHERE RouteFrom ...
//     ^          ^

此外,此代码容易受到SQL注入攻击。请阅读parameterized queries

答案 1 :(得分:0)

您有表别名“no”但未在部分中定义。
试试这个:

Select no.ofTrips FROM tbl_bill_addtrips no WHERE ...

或从列中删除别名:

Select ofTrips FROM tbl_bill_addtrips WHERE ...

答案 2 :(得分:0)

您不能在查询中使用列名no.ofTrips。它将在表格和列中分开。例如,no表格名称包含ofTrips作为列。在查询中检查列名是否正确。

解决方案:使用sql中的允许字符更正no.ofTrips列名称。

查询多个如下:

"Select no.ofTrips FROM tbl_bill_addtrips as no WHERE RouteFrom = '"....

此处no被视为您可能遗失的tbl_bill_addtrips的违约行为。

检查一下 - What special characters are allowed in T-SQL column name?

答案 3 :(得分:0)

它的发生是因为您的列名称由'。'组成。尝试将列重命名为no_of_Trips或no_ofTrips,因为。它将'no'作为表,'ofTrips'作为列

你也可以在列名称周围使用[]作为[no.ofTrips]