C# 缺少对象或列名

C# 缺少对象或列名,c#,sql,wpf,C#,Sql,Wpf,我得到以下错误: 对象或列名丢失或为空。对于SELECT INTO语句,请验证每个列都有名称。对于其他语句,请查找空别名。不允许使用定义为“”或[]的别名。添加名称或单个空格作为别名 对于下面显示的查询: if (comboBox1.SelectedIndex > -1) { // comboBox1.UpdateLayout(); SqlCom.CommandText = "select distinct table_name from [" +comboBox1

我得到以下错误:

对象或列名丢失或为空。对于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填充为:`SqlCom.CommandText=“select*from sys.databases where database_id>4 order by name”;
这行得通

所以如果我读对了

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

组合框2是一个表名列表

您试图查找给定数据库的表列表以填充组合框2,对吗?如果是的话

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

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

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

    这意味着您的两个组合框值都为空。探索您在哪里丢失了值,您将得到您的答案。

    请使用参数化查询在从Comboxes中填写值后发布您的查询使用在
    上弹出一条特征线,并检查您的查询外观。而且,它清楚地说,
    定义为“”或[]的别名是不允许的
    ,而且您有[and]两个别名。我要说的是,存在许多问题。SQL注入,不正确地处理非托管资源(即:使用
    SqlCommand
    对象的
    子句缺少
    ),没有错误处理。。。。然而,这些都不是你要问的特定问题。按照没人说的去做,发布生成的实际查询。你用SSMS尝试过吗?这个程序是在Winforms C#alredy中构建的,运行良好,我想将它包含在wpf应用程序中…Combobox1用所有数据库的名称填充,但它上载了一个不在该数据库中的表列表:MSreplication#u options,spt_备用数据库、spt_备用开发、spt_备用usg、,spt_monitor我在sql中运行了这个sql命令:从DB1.information_schema.columns中选择distinct table_name c internal join DB1.sys.tables t on c.table_name=t.name按table_name排序,效果很好,但我仍然不知道在哪里丢失了组合框内容:|我从未使用过WPF组合框,但如果我没有弄错的话,您必须使用
    SelectedValue
    而不是
    Text
    ,就像在
    下拉列表
    列表框
    中一样。问题已解决,谢谢:D