C# 如何通过选择行来改进SQL查询

C# 如何通过选择行来改进SQL查询,c#,sql-server,C#,Sql Server,我想通过选择行来改进我的SQL查询 当我使用 cmd.CommandText = "SELECT user FROM users"; 在我的代码中,行中有一个错误 FillComboBox(dr["user"].ToString()); 列用户不属于该表 原始代码,这是有效的 public void ReadUsersInfo(string connectionString) { SqlConnection conn = new SqlConnection(connectionStr

我想通过选择行来改进我的SQL查询

当我使用

cmd.CommandText = "SELECT user FROM users";
在我的代码中,行中有一个错误

FillComboBox(dr["user"].ToString());
列用户不属于该表

原始代码,这是有效的

public void ReadUsersInfo(string connectionString)
{
    SqlConnection conn = new SqlConnection(connectionString);
    conn.Open();

    SqlCommand cmd = conn.CreateCommand();
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "SELECT * FROM users";

    cmd.ExecuteNonQuery();

    DataTable dt = new DataTable();

    SqlDataAdapter da = new SqlDataAdapter(cmd);
    da.Fill(dt);

    foreach (DataRow dr in dt.Rows)
    {
        FillComboBox(dr["user"].ToString());
    }

    Console.Read();
    conn.Close();
}

首先,您正在执行不必要的命令。使用数据适配器时:

  • 您不需要在之前打开连接
  • 甚至创建一个命令
  • 或者两者都不执行该命令
其次,检查是否传递了正确的连接字符串-确保连接到映像的数据库,而不是具有表“users”但不具有列“user”的其他数据库

第三,也是最后一点,基于您的图像,表和列是存在的,因此下面的代码必须工作

公共静态void ReadUsersInfo(字符串连接字符串)
{
const string query=“从dbo.users中选择[用户];
使用(var dataTable=new dataTable())
{
使用(var sqlConnection=newsqlconnection(connectionString))
{
使用(var dataAdapter=newsqldataadapter(查询,sqlConnection))
{
dataAdapter.Fill(dataTable);
}
}
foreach(dataTable.Rows中的DataRow dr)
{
Console.WriteLine(dr[“user”].ToString());
}
}
Console.ReadKey();
}
是返回当前用户的数据库用户名的关键字。例如,
selectuser
onmydatabase返回
dbo

下面的查询将此上下文选择为不带名称的列:

SELECT user FROM users

(No column name)
================
dbo
要返回与关键字同名的列,需要使用括号将其转义:

SELECT [user] FROM users

列用户不属于该表这对我来说似乎是一条非常明确的错误消息。您能显示您的表结构吗?表用户似乎没有名为“user”的列。如果没有SQL中的表结构,这个问题就不完整。请检查您的代码片段与错误没有多大关系。列“user”不属于表“users”,这是一个非常简单的错误。你首先要检查的是,如果有。尝试使用一个简单的“select*fromtablename”。或者您也可以从schema视图检查是否可以访问数据库。等等,ExecuteOnQuery是否返回任何内容?我想改进我的SQL查询。“select*from dbo.users”从dbo.users中选择用户