[英]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.