我们正在使用Dapper进行某些数据访问活动,并使用推荐的标准方法来连接数据库,如下所示:
using (var conn = ConnectionFactory())
{
conn.Open();
var result = await conn.ExecuteAsync(sql, p, commandType: CommandType.StoredProcedure);
return result;
}
但是,如果我们尝试执行一条语句,则在文档中显示您需要先声明:
conn.open()
这意味着,您必须显式打开连接。但是,如果我们省略语句private fun createFragment(fragmentClass: Class<*>, fragmentArgs: Bundle?): Fragment {
try {
val fragment = fragmentClass.newInstance() as Fragment
fragment.arguments = fragmentArgs
return fragment
} catch (exception: Exception) {
throw RuntimeException(exception.message)
}
}
,它也可以工作,并且我们担心在这种情况下可能无法正确处理连接。
对于在没有明确打开任何连接的情况下如何执行SQL的任何评论,我将不胜感激。
答案 0 :(得分:1)
Dapper提供了两种处理连接的方法。
首先是-允许Dapper处理它。
在这里,您无需先打开连接,就可以将其发送给Dapper。如果输入连接未处于打开状态,则Dapper将打开它-Dapper将执行操作-Dapper将关闭连接。
这将仅关闭连接。 Open/Close比处置different多。因此,如果您真的想处置连接,最好改用第二种方式。
第二个是-自己处理。
在这里,您应该自己显式创建,打开,关闭和处置连接。
有关更多详细信息,请参阅以下链接:
https://stackoverflow.com/a/51138718/5779732
https://stackoverflow.com/a/41054369/5779732
https://stackoverflow.com/a/40827671/5779732