我试图通过使用SQL语句调用方法来创建访问access2010 .accdb数据库的方法。这个方法目前在我的“试验和错误”的几个小时后工作。是否有任何方法可以优化这段代码,使其更加健壮,更简单,因为涉及的步骤很多。 (新的连接,那么新的命令,然后新的阅读器等似乎只是执行一个SQL命令的太多步骤?)
顺便说一句,这段代码是查询数据库并返回一个字符串。
public static string getString(string SQL)
{
using (var connection = new OleDbConnection(connectionString))
using (var command = connection.CreateCommand())
{
command.CommandText = SQL;
command.CommandType = CommandType.Text;
connection.Open();
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
return reader.GetString(0).ToString();
}
}
return null;
}
}
}
答案 0 :(得分:2)
由于您最多只读取一个值,因此可以使用ExecuteScalar
方法:
using(var connection = new OleDbConnection(connectionString))
using(var command = connection.CreateCommand())
{
command.CommandText = SQL;
command.CommandType = CommandType.Text;
connection.Open();
var value = command.ExecuteScalar();
return value == DBNull.Value ? null : value.ToString();
}
答案 1 :(得分:0)
在我看来这个方法看起来非常好,如果不是在日志系统上使用SQL语句的日志进行异常日志记录,那就没有多少了。
请注意,您实际上只返回一个标量字符串,因为您可以使用ExecuteScalar
并完全避开读者。