web-dev-qa-db-ja.com

C#での単純なSQL選択?

現在のプロジェクトでは、単一の値(id = valのテーブルから列を選択)を取得するために、前のプログラマーはdatarow、datatable、およびsqldatadapter(そしてもちろんsqlconnection)を使用して、その1つの値を取得します。

単純な選択クエリを作成する簡単な方法はありますか? phpでは、mysql_queryを使用してからmysql_resultを使用するだけで完了です。

私がちょうどできるならそれはいいです:

SqlConnection conSql = new SqlConnection(ConnStr);
SomeSqlClass obj = new SomeSqlClass(sql_string, conSql);
conSql.Close();
return obj[0];

ヒントをありがとう。

13
Chris

DataReaderDataAdapterをスキップして、sqlコマンドでExecuteScalar()を呼び出すだけです。

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);
        }
 }
38
womp

あなたはおそらくSqlCommandSqlDataReaderを探しています

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();
}
9

実際には、返された結果の最初の行から最初のフィールドを単に返すメソッドSqlCommand.ExecuteScalar()があります。貴方のために。

。NET FrameworkクラスライブラリSqlCommand .. ::。ExecuteScalarメソッド

クエリを実行し、クエリによって返された結果セットの最初の行の最初の列を返します。追加の列または行は無視されます。

5
user151323

あなたは非常に似たようなことができます:

using (SqlConnection conn = new SqlConnection(ConnStr))
using (SqlCommand cmd = new SqlCommand(sql_string, conn))
{
    conn.Open();
    return cmd.ExecuteScalar();
}
4
LukeH

sqlCommandsのexecuteScalar関数を使用できます。下記リンクをご覧ください

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

3
Fahad