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】:您可以跳过DataReader
和DataAdapter
,只需在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】:
您可能正在寻找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();
【讨论】:
+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 选择?的主要内容,如果未能解决你的问题,请参考以下文章