我正在尝试在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());
}
请提前帮助我
答案 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]