using语句SQL命令
问题描述:
我有时间比我可以做查询时使用块切记不要使用,但是我现在有一个问题带有锁定表和它看起来像查询不处置properley。using语句SQL命令
但是我需要重新写下面的代码到一个使用块。
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;
答
你不有这样做完全是这样 - 你可以使用类似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;
你为什么不试试看看会发生什么?那么如果你有问题,你可以回来问问! – Nick 2012-04-25 10:05:21
锁定表并没有真正得到很多事要做'using'陈述,特别是因为你正在使用'ExecuteScalar' – 2012-04-25 10:10:06
处置命令或连接有*不*做[表锁](HTTP://博客。 msdn.com/b/joesack/archive/2009/05/22/troubleshooting-table-locks.aspx)。 – 2012-04-25 10:11:43