缺少对象或列名称

时间:2013-08-21 16:28:31

标签: c# sql wpf

我收到以下错误:

  

对象或列名称缺失或为空。对于SELECT INTO语句,请验证每列是否具有名称。对于其他语句,请查找空别名。不允许使用定义为“”或[]的别名。添加名称或单个空格作为别名。

对于下面显示的查询:

if (comboBox1.SelectedIndex > -1) {

    // comboBox1.UpdateLayout();

    SqlCom.CommandText = "select  distinct  table_name from [" +comboBox1.Text + "].information_schema.columns c inner join [" + comboBox1.Text + "].sys.tables t on c.table_name = t.name order by table_name";

    using (SqlDR = SqlCom.ExecuteReader()) {

        comboBox2.Items.Clear();

        while (SqlDR.Read()) {

            comboBox2.Items.Add(SqlDR.GetString(0));}

        }
}

知道这里有什么问题吗?

我填充了combobox1 whit:`SqlCom.CommandText =“select * from sys.databases where database_id> 4 order by name”; 这没关系

2 个答案:

答案 0 :(得分:2)

正如您在其中一条评论中提到的,实际查询是:

select distinct table_name 
from .information_schema.columns c 
inner .sis.tables t 
on c.table_name = t.name order by table_name 

这意味着你的两个组合框值都是空的。探索你失去价值的地方,你会得到答案。

答案 1 :(得分:1)

所以如果我读得对......

组合框1是数据库名称列表...

组合框2是表名列表...

您正在尝试查找给定数据库的表列表以填充组合框2,对吧?如果是的话......

  1. 为什么查询中的联接表?为什么要使用这样一个短查询的表别名呢?为什么不选择一个列表 来自sys.tables的表?
  2. 参数参数参数,正如评论员已经说过的那样