C# 缺少对象或列名
我得到以下错误: 对象或列名丢失或为空。对于SELECT INTO语句,请验证每个列都有名称。对于其他语句,请查找空别名。不允许使用定义为“”或[]的别名。添加名称或单个空格作为别名 对于下面显示的查询:C# 缺少对象或列名,c#,sql,wpf,C#,Sql,Wpf,我得到以下错误: 对象或列名丢失或为空。对于SELECT INTO语句,请验证每个列都有名称。对于其他语句,请查找空别名。不允许使用定义为“”或[]的别名。添加名称或单个空格作为别名 对于下面显示的查询: if (comboBox1.SelectedIndex > -1) { // comboBox1.UpdateLayout(); SqlCom.CommandText = "select distinct table_name from [" +comboBox1
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,对吗?如果是的话
正如您在其中一条评论中提到的,实际查询是:
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