使用 SQL 命令的语句

本文关键字:语句 命令 SQL 使用 | 更新日期: 2023-09-27 18:32:15

我记得在进行查询时没有使用块的时间比我记得的要长,但是我现在在锁定表时遇到了问题,看起来查询没有正确处理。

但是,我需要将以下代码重写到using 块中。

sql = conn.CreateCommand();
sql.CommandText = query;
sql.Parameters.Add("@p_DateFrom", SqlDbType.VarChar).Value = datefrom.ToString("yyyy-MM-dd");
sql.CommandType = CommandType.Text;
int rowCount = (Int32)sql.ExecuteScalar();
sql.Parameters.Clear();
sql.Dispose();
return rowCount;

我将如何重写它。我必须执行以下操作吗:

int rowCount = 0;
using (sql = conn.CreateCommand())
{
    sql.CommandText = query;
    sql.Parameters.Add("@p_DateFrom", SqlDbType.VarChar).Value = datefrom.ToString("yyyy-MM-dd");
    sql.CommandType = CommandType.Text;
    rowCount = (Int32)sql.ExecuteScalar();
}           
return rowCount;

使用 SQL 命令的语句

不必那样做 - 你可以使用类似 dapper 的东西:

int rowCount = conn.Query<int>(query, new {p_DateFrom = datefrom}).Single();

工作完成;一切都处理得很好,没有弄乱参数,并且不会犯将日期时间作为字符串传递的错误(它应该作为日期时间传递)。

我必须执行以下操作吗:

是的。

更长的答案:

是的,您必须执行以下操作。

甚至更长:

是的,您必须执行以下操作:

int rowCount = 0;
using (sql = conn.CreateCommand())
{
    sql.CommandText = query;
    sql.Parameters.Add("@p_DateFrom", SqlDbType.VarChar).Value = datefrom.ToString("yyyy-MM-dd");
    sql.CommandType = CommandType.Text;
    rowCount = (Int32)sql.ExecuteScalar();
}           
return rowCount;