c# - 使用 DbConnection、SqlConnection、SqlCommand、DbCommand 等连接数据库
问题描述
我已经研究过使用 ado.net 建立与数据库的连接。我被DbConnection
, SqlConnection
, SqlCommand
,弄糊涂了DbCommand
。有人可以告诉我区别吗?
我搜索了这些术语,似乎这些 DB 前缀是这些前缀的基类Sql
。
那么什么时候应该使用这些Sql
前缀(SqlConnection
),什么时候应该使用 DB 前缀(DbConnection)?
此外,如果我把连接字符串放在App.config
orWeb.config
中,我还需要使用这种格式来打开和关闭连接吗?
string connString = "Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;";
using (SqlConnection conn = new SqlConnection(connString))
{
}
因为在我尝试在 中添加连接字符串之后App.config
,似乎我不再需要打开和关闭连接了。
另外,什么时候使用SqlParameter?谁能给我一个例子?
那是为了从数据库中传递存储过程的参数吗?
使用 DataTable、DataSet 或 reader 传递值是否更方便?
解决方案
DbConnection
描述了与多个数据库对话的通用 API;SqlConnection
是用于与 SQL Server 对话的特定API,即DbConnection
. 因此,SqlConnection
如果您知道您正在与 SQL Server 交谈,并且DbConnection
如果您想在抽象的“任何服务器”意义上谈论连接,您就会使用。SqlConnection
将为您提供比DbConnection
.
对于参数:基本上,每当您将任何类型的输入传递给任何命令时。所以:很多。您可能会发现像 Dapper 或 EF 这样的工具更容易。
For DataTable
/ DataSet
:这些不应该是你默认使用的东西。它们仍然有效,但通常任何其他方法都是可取的。
推荐阅读
- kubernetes - 在现有 Kubernetes 集群上安装 Rancher 时出现权限错误
- google-drive-api - PyDrive 获取备份列表
- java - 在预定方法中运行 ExecutorService
- node.js - 节点测量执行时间 - 从作为参数传递给另一个函数的异步返回值
- ios - 如何通知视图变量状态已从 SwiftUI 中提取的子视图中更新
- google-apps-script - 模拟获取过滤条件 - 错误 | Google Apps 脚本
- node.js - 错了!纱线运行构建标准错误:错误命令失败,退出代码为 2
- java - Apache POI:${my_placeholder} 被视为三个不同的运行
- bootstrap-modal - Laravel Livewire 使用点击事件隐藏引导模式
- excel - 比较两个单元格并用符号显示输出