Простой SQL-выбор в С#?
В моем текущем проекте, чтобы получить одно значение (выберите столбец из таблицы, где id = val), предыдущий программист проходит через datarow, datatable и sqldatadapter (и, конечно, sqlconnection), чтобы получить это одно значение.
Есть ли более простой способ сделать простой запрос выбора? В php я могу просто использовать mysql_query
, а затем mysql_result
, и я закончил.
Было бы неплохо, если бы я мог просто сделать:
SqlConnection conSql = new SqlConnection(ConnStr);
SomeSqlClass obj = new SomeSqlClass(sql_string, conSql);
conSql.Close();
return obj[0];
Спасибо за любые советы.
Ответы
Ответ 1
Вы можете пропустить DataReader
и DataAdapter
и просто вызвать ExecuteScalar()
в команде sql.
using (SqlConnection conn = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand("SELECT * FROM whatever
WHERE id = 5", conn);
try
{
conn.Open();
newID = (int)cmd.ExecuteScalar();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
Ответ 2
Возможно, вы ищете SqlCommand
и SqlDataReader
Dictionary<int, string> users = new Dictionary<int, string>();
using(SqlConnection connection = new SqlConnection("Your connection string"))
{
string query = "SELECT UserId, UserName FROM Users";
SqlCommand command = new SqlCommand(query, connection);
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
users.Add(reader.GetInt32(0), reader.GetString(1));
}
connection.Close();
}
Ответ 3
На самом деле существует метод SqlCommand.ExecuteScalar(), который просто вернет первое поле из первой строки возвращаемых результатов. Просто для вас.
. Библиотека классов NET Framework
SqlCommand..::. ExecuteScalar Method
Выполняет запрос и возвращает первый столбец первой строки в результирующем наборе, возвращаемом запросом. Дополнительные столбцы или строки игнорируются.
Ответ 4
Вы можете сделать что-то очень похожее:
using (SqlConnection conn = new SqlConnection(ConnStr))
using (SqlCommand cmd = new SqlCommand(sql_string, conn))
{
conn.Open();
return cmd.ExecuteScalar();
}
Ответ 5
вы можете использовать функцию SqlCommands executeScalar. Посмотрите следующую ссылку.
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar.aspx