Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#优化查询方法代码_C# - Fatal编程技术网

C#优化查询方法代码

C#优化查询方法代码,c#,C#,我试图创建一个方法来访问access2010.accdb数据库,只需使用SQL语句调用该方法。经过我数小时的“反复试验”,这种方法目前有效。由于涉及到许多步骤,是否有任何方法可以改进这段代码,使其更健壮、更简单。(新连接、新命令、新读卡器等似乎只是执行一个SQL命令的步骤太多?) 顺便说一句,此代码用于查询数据库并返回字符串 public static string getString(string SQL) { using (var connection = new OleDbC

我试图创建一个方法来访问access2010.accdb数据库,只需使用SQL语句调用该方法。经过我数小时的“反复试验”,这种方法目前有效。由于涉及到许多步骤,是否有任何方法可以改进这段代码,使其更健壮、更简单。(新连接、新命令、新读卡器等似乎只是执行一个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;
        }
    }
}

由于最多只能读取一个值,因此可以使用以下方法:


在我看来,这种方法看起来非常好,如果不是在日志系统上使用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();
}