列不属于表(多字查询)

时间:2013-05-11 09:02:22

标签: c# sql oledb

当我尝试读取包含多个单词的查询时,我遇到此问题。 基本上在从组合框中选择项目后,我将字符串值放入查询并进行交换。 当我选择1个单词项目时它工作正常但是如果我选择多个单词项目则会引发错误:

Column 'Eligible for free meals' does not belong to table Eligible for free meals.

'Eligible for free meels'代表所选项目。我试图放%并删除单引号但它没有帮助......任何人都可以帮我解决这个问题。我只是一个初学者,并不太了解c#....

        string Column = Filter1.Text;
        Filter1Values.Items.Clear();
        string Query = "select '" + Column + "' from [data$]";
        OleDbDataAdapter da = new OleDbDataAdapter(Query, con);            
        DataSet ds = new DataSet();
        DataTable dt = new DataTable();
        da.Fill(ds, Column);
        dt = ds.Tables[Column];
        for (int i = 0; i <= dt.Rows.Count - 1; i++)
        {
            string value = dt.Rows[i][Column].ToString();
            if (!Filter1Values.Items.Contains(value))
            {
                Filter1Values.Items.Add(value);
            }
        }

谢谢!对不起,如果格式不合适,我是新来的......

1 个答案:

答案 0 :(得分:1)

正如您在方括号中包围表名一样,您似乎正在使用MSSQL。因此,因为您的列名称可以包含空格,所以您应该对它们执行相同操作,例如...

string Query = "select [" + Column + "] from [data$]";

对于Oracle,它将是......

string Query = "select \"" + Column + "\" from data$";

对于MySQL,它将是......

string Query = "select `" + Column + "` from data$";