在C#中选择简单的SQL?

时间:2009-10-01 16:08:02

标签: c# asp.net sql select

在我当前的项目中,为了获得单个值(从表中选择id = val的列),以前的程序员通过使用数据行,数据表和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 个答案:

答案 0 :(得分:37)

您可以跳过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);
        }
 }

答案 1 :(得分:9)

您可能正在寻找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();
}

答案 2 :(得分:5)

实际上,有一个方法SqlCommand.ExecuteScalar()只返回返回结果第一行的第一个字段。只为你。

.NET Framework Class Library SqlCommand..::.ExecuteScalar Method

  

执行查询,并返回查询返回的结果集中第一行的第一列。其他列或行将被忽略。

答案 3 :(得分:4)

你可以做一些非常相似的事情:

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

答案 4 :(得分:3)

您可以使用SqlCommands executeScalar函数。请查看以下链接

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