C# 中的简单 SQL 选择?

Posted

技术标签:

【中文标题】C# 中的简单 SQL 选择?【英文标题】:Simple SQL select in C#? 【发布时间】:2010-12-03 01:22:52 【问题描述】:

在我当前的项目中,为了获得单个值(从 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];

感谢任何提示。

【问题讨论】:

既然您要求的不仅是解决方案,还有技巧,我建议您看看 LINQ,它不仅用于数据库查询,而且有很大帮助!跨度> +1:我必须佩服问题标题中的头韵 也推荐企业库数据块。它使大多数数据库调用变得简单。 msdn.microsoft.com/en-us/library/dd203099.aspx 谢谢,我去看看那些工具。 Chris - 一开始看起来非常冗长和荒谬,但大多数开发人员将这些形式转移到数据访问层(使用诸如存储库之类的模式)。最终结果只需一两行代码即可获得所需的一切。将它与 LINQ 结合起来,它比 PHP 更快、代码更少,甚至可能更强大。 【参考方案1】:

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

【讨论】:

谢谢,我现在可能会使用这个解决方案。谢谢! 这里要注意一点,ExecuteScalar返回结果中第一列的第一行。最好明确使用字段名称。这样的事情甚至更好select top 1 MyField ... sort by asc/desc 来获得所需的单个值。 添加这个命名空间using System.Data.SqlClient; 真的,真的很好很简单。我的大部分东西都不需要单一值。感谢您提供快速简便的服务。【参考方案2】:

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

【讨论】:

+1 使用阅读器。但是你不应该使用列索引!!!此外,您不需要连接。关闭(它由“使用”语句处理。)【参考方案3】:

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

.NET Framework Class Library 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

【讨论】:

以上是关于C# 中的简单 SQL 选择?的主要内容,如果未能解决你的问题,请参考以下文章

C# 选择带参数的 SQL 查询

带有子查询的休眠选择查询?

C# SQL 选择查询表参数

在 C# 中优化多个 SQL 选择

VS2010 - 从 C# 执行各种 sql 管理任务的当前选择库是啥

反 Sql 注入库 C# Asp.NET