Простой выбор SQL в C #? - PullRequest
       37

Простой выбор SQL в C #?

12 голосов
/ 01 октября 2009

В моем текущем проекте, чтобы получить единственное значение (выбрать столбец из таблицы, где 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];

Спасибо за любые советы.

Ответы [ 5 ]

37 голосов
/ 01 октября 2009

Вы можете пропустить 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);
        }
 }
9 голосов
/ 01 октября 2009

Вы, вероятно, ищете 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();
}
5 голосов
/ 01 октября 2009

На самом деле, существует метод SqlCommand.ExecuteScalar (), который просто возвращает первое поле из первой строки возвращаемых результатов. Только для тебя.

.NET Framework Библиотека классов SqlCommand .. ::. ExecuteScalar Method

Выполняет запрос и возвращает первый столбец первой строки в наборе результатов, возвращенных запросом. Дополнительные столбцы или строки игнорируются.

4 голосов
/ 01 октября 2009

Вы можете сделать что-то очень похожее:

using (SqlConnection conn = new SqlConnection(ConnStr))
using (SqlCommand cmd = new SqlCommand(sql_string, conn))
{
    conn.Open();
    return cmd.ExecuteScalar();
}
3 голосов
/ 01 октября 2009

вы можете использовать функцию SqlCommands executeScalar. Пожалуйста, посмотрите на следующую ссылку

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...