C#优化查询方法代码
我试图创建一个方法来访问access2010.accdb数据库,只需使用SQL语句调用该方法。经过我数小时的“反复试验”,这种方法目前有效。由于涉及到许多步骤,是否有任何方法可以改进这段代码,使其更健壮、更简单。(新连接、新命令、新读卡器等似乎只是执行一个SQL命令的步骤太多?) 顺便说一句,此代码用于查询数据库并返回字符串C#优化查询方法代码,c#,C#,我试图创建一个方法来访问access2010.accdb数据库,只需使用SQL语句调用该方法。经过我数小时的“反复试验”,这种方法目前有效。由于涉及到许多步骤,是否有任何方法可以改进这段代码,使其更健壮、更简单。(新连接、新命令、新读卡器等似乎只是执行一个SQL命令的步骤太多?) 顺便说一句,此代码用于查询数据库并返回字符串 public static string getString(string SQL) { using (var connection = new OleDbC
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;
}
}
}
由于最多只能读取一个值,因此可以使用以下方法:
在我看来,这种方法看起来非常好,如果不是在日志系统上使用SQL语句日志记录异常,那么就没有什么可添加的了
请注意,实际上您只返回标量字符串,因此您可以使用
ExecuteScalar
并完全避免读卡器。在我看来非常简短。你要多短?你可以在其他地方打开一次连接,但如果我是你,我每次都会继续打开它(除非你一次就做了很多查询)。。。简而言之,让它保持原样。。。哦,你看起来没有使用命令参数来阻止SQL注入-如果需要,在Google上搜索将删除内部使用,你只需要一个使用,而不是使用execute reader execute scalar,因为你只返回一条记录
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();
}