簡體   English   中英

如何通過選擇行來改進SQL查詢

[英]How to improve SQL query by selecting row

我想通過選擇ROW來改進我的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();
}

user是返回當前用戶的數據庫用戶名的關鍵字。 例如,我數據庫中的select user返回dbo

下面的查詢選擇此上下文作為不帶名稱的列:

SELECT user FROM users

(No column name)
================
dbo

要返回與關鍵字同名的列,您需要使用方括號將其轉義:

SELECT [user] FROM users

首先,您正在執行不必要的命令。 使用數據適配器時:

  • 您無需先打開連接;
  • 甚至創建命令;
  • 或都不執行命令。

其次,檢查您是否傳遞了正確的連接字符串-確保您正在連接到圖像的數據庫,而不是連接到具有表'users'而不是表'user'的其他數據庫。

第三,也是最后,根據您的圖像,表和列存在,因此下面的代碼必須起作用。

public static void ReadUsersInfo(string connectionString)
{
    const string query = "select [user] from dbo.users";

    using (var dataTable = new DataTable())
    {
        using (var sqlConnection = new SqlConnection(connectionString))
        {
            using (var dataAdapter = new SqlDataAdapter(query, sqlConnection))
            {
                dataAdapter.Fill(dataTable);
            }
        }

        foreach (DataRow dr in dataTable.Rows)
        {
            Console.WriteLine(dr["user"].ToString());
        }
    }

    Console.ReadKey();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM