(四)数据库命令(SQL Server) ——以编程方式访问数据库
1、 创建命令
SqlCommand对象有4个构造函数:
1) SqlCommand cmd = new SqlCommand();
2) SqlCommand cmd = new SqlCommand(“<command string>”);
3) SqlCommand cmd = new SqlCommand(“<command string>”,<connection string>);
4) SqlCommand cmd = new SqlCommand(“<command string>”,<connection string>,
<transaction>);
2、 CommandText命令类型
命令类型 | 说明 |
CommandType.Text | 默认值;指定CommandText属性为SQL命令。该命令可能是参数化的。 |
CommandType.TableDirect | CommandText应为表或视图的名称。返回指定的表中的所有行和列。 |
CommandType.StoredProcedure | 表示CommandText包含存储过程的名称。 |
3、 执行命令的方法
命令 | 说明 |
DbCommand. ExecuteNonQuery() | 命令不返回结果,适用于Insert,Update和Delete命令。事实上命令返回一个表示命令影响行数的int类型的返回值。 |
DbCommand. ExecuteScalar() | 返回任意类型的结果,类型是object。不适合返回行数据的Select命令,如果查询实际上返回行数据,该方法将返回第一行的第一列。 |
DbCommand .ExecuteReader() | 命令返回行,返回值是SqlDataReader对象。适用于大多数Select、表直接(tabledirect)命令和很多存储过程。 |
SqlCommand. ExecuteXmlReader() | 返回XML数据。(注:SQL Server的DbCommand版本名为SqlCommand,它有自己的一些特殊的方法,如ExecuteXmlReader()) |
4、 参数化命令
有助于防止SQL 注入攻击,也有助于重用命令。另外,对于使用参数的存储过程,必需采用这种技术,因为使用命令类型StoredProcedure时,这些参数不能包含在命令文本中。
要在SQL语句中使用参数,需要提供占符(变量),它的前缀为字符@。配置参数后,就可以使用SqlParemeter.Value属性来设置它的值。由于SqpParametersCollection.Add()方法返回对添加的参数的引用,因此通常在同一行代码中设置参数的值。
使用输入参数的例子:
SqlCommand cmd = new SqlCommand (“SELECT * FROM myTable WHERE MyID=@MyIDIn”,conn);
cmd.Parameters.Add(“@MyIDIn”,SqlDbType.UniqueIdentifier).Value=MyGuidVar;
使用输出参数(或双向)参数的例子:(此时应独立地实例化参数)
SqlParameter myParam = new SqlParameter(“@myOutputParam”,SqlDbType.Int);
myParam.Direction = ParameterDirection.Output;
…
默认方向是ParameterDirection.Input,也可以用ParameterDirection.InputOutput指定双向参数,用ParameterDirection.ReturnValue指定输出参数(如果参数是存储过程的返回值)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何调试 malloc 的底层源码
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 因为Apifox不支持离线,我果断选择了Apipost!
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端