C#refine方法代码用于查询

时间:2011-10-21 16:24:59

标签: c#

我试图通过使用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;
        }
    }
}

2 个答案:

答案 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并完全避开读者。