【问题标题】:Object or column name missing缺少对象或列名
【发布时间】:2013-08-21 16:28:30
【问题描述】:

我收到以下错误:

对象或列名丢失或为空。对于 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"; 这工作正常

【问题讨论】:

  • 请使用参数化查询stackoverflow.com/q/5468425/791952
  • 填写组合框中的值后发布您的查询
  • using 上添加一条断线,然后检查您的查询的样子。此外,它清楚地表明,Aliases defined as "" or [] are not allowed 并且您同时拥有 [ 和 ]。
  • 我想说有很多问题。 SQL 注入,不正确地处理非托管资源(即:缺少SqlCommand 对象的USING 子句),没有错误处理......但是,这些都不是您要询问的特定问题。照着没人说的做,然后发布生成的实际查询。
  • 你用 SSMS 试过了吗?

标签: c# sql wpf


【解决方案1】:

正如您在其中一个 cmets 中提到的,实际查询是:

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

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

【讨论】:

  • 所以我在 sql 中运行了这个 sql 命令: select distinct table_name from DB1.information_schema.columns c inner join DB1.sys.tables t on c.table_name = t.name order by table_name,它工作正常但我仍然无法弄清楚我在哪里丢失了组合框内容:|
  • 我从未使用过 WPF 组合框,但如果我没记错的话,您将不得不使用 SelectedValue 而不是 Text,就像在 DropDownListListBox 中一样。跨度>
  • 问题已解决,谢谢:D
【解决方案2】:

如果我没看错的话……

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

Combo Box 2 是一个表名列表...

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

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

【讨论】:

  • 这个程序是用 Winforms C# 构建的,并且运行良好,我想将它包含在 wpf 应用程序中......
  • Combobox1 填充了所有数据库的名称,但它上传了一个不在该数据库中的表列表:MSreplication_options、spt_fallback_db、spt_fallback_dev、spt_fallback_usg、spt_monitor
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-19
  • 1970-01-01
  • 1970-01-01
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多