SQLCommand命令、DbTransaction事务
一、SqlDataReader
SqlConnection conn = new SqlConnection("server=10.126.64.11;user=it_oper;pwd=IT@SME2018;database=MESOtheata;");
conn.Open();
SqlCommand cmd = new SqlCommand("select * from [A_Emp_Dept_20190522]", conn);// 或者
//或者 SqlCommand cmd=conn.CreateCommand();cmd.CommandText="";
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);//读取完毕自动关闭连接
for (int i = 0; i < reader.FieldCount - 1; i++)
{
Console.WriteLine(reader.GetName(i));//获取字段名
while (reader.Read())//或者使用reader.HasRows属性判断时候有记录
{
Console.WriteLine(reader.GetDateTime(0).ToString());
//或者 Console.WriteLine(Convert.ToDateTime(reader[0]).ToString());
object[] values = new object[reader.FieldCount - 1];
reader.GetValues(values);//读取一行所有字段的内容到Values字段中
if (reader.IsDBNull(0)
{
//判断某字段是否为null值。
}
} }
reader.Close();
//系统未关闭时,本Command更改CommandText后或新建Command还有继续使用此连接。
//conn.Close();
二、参数化查询
1、使用SQLClient:
SqlCommand cmd = new SqlCommand("select * from [A_Emp_Dept_20190522] where empname=@empname", conn);
SqlParameter para = new SqlParameter("@empname", SqlDbType.NVarChar, 10);
para.Value = "曾亮";
cmd.Parameters.Add(para);
//或者直接 cmd.Parameters.AddWithValue("@empname","曾亮");
2、使用OleDb:
OleDbCommand cmd = new OleDbCommand("select * from [A_Emp_Dept_20190522] where empname like ? and line like ?", conn);
cmd.Parameters.AddWithValue("@empname", "曾亮");
cmd.Parameters.AddWithValue("@line", "ODMZ%");//参加的参数的顺序应与?号的顺序相同,参数名可随意执行,甚至可以是空串。
三、执行无返回值的查询:cmd.ExecuteNonQuery()
SqlCommand cmd = new SqlCommand("update [A_Emp_Dept_20190522] set dept='aa' where dept='' ", conn);
int RecordAffected = cmd.ExecuteNonQuery();
if (RecordAffected == 0)
{
Console.Write("操作失败");
}
四、执行返回单值的查询:cmd.ExecuteScalar()
SqlCommand cmd = new SqlCommand("select count(*) from [A_Emp_Dept_20190522] ", conn);
if (Convert.ToInt32(cmd.ExecuteScalar()) == 0)//无记录,返回null
{
Console.Write("无记录");
}
五、使用Transaction事务
SqlTransaction trans = null;
try
{
trans = conn.BeginTransaction();//默认事务隔离级别为ISolationLevel.Serilizable,Oracle为ISolationLevel.ReadCommited
SqlCommand cmd = new SqlCommand("Insert int **", conn);
cmd.Transaction = trans;//为命令指定一个事务
cmd.ExecuteNonQuery();
//可以有多个SqlCommand一并执行,一起提交或回滚
trans.Commit();
}
catch
{
trans.Rollback();
}
Transaction事务隔离级别:
六、调用存储过程
SqlCommand cmd = new SqlCommand("GetCustomer", conn);
cmd.CommandType = CommandType.StoredProcedure; SqlParameter para1 = new SqlParameter("@CustomerID", SqlDbType.NChar, 10);
para1.Value = "UINET";
cmd.Parameters.Add(para1); SqlParameter para2 = new SqlParameter("@CompanyName", SqlDbType.NVarChar, 30);
para2.Direction = ParameterDirection.Output;
cmd.Parameters.Add(para2); cmd.ExecuteNonQuery();
Console.WriteLine(cmd.Parameters["@CompanyName"].Value);
七、使用DataReader获取数据库模式信息
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SchemaOnly);//仅仅读取模式信息
DataTable table = reader.GetSchemaTable();
foreach (DataRow row in table.Rows)
{
foreach (DataColumn col in table.Columns)
{
Console.WriteLine(col.ColumnName + row[col.ColumnName]);
}
}
八、浏览多个结果集
SqlCommand cmd = new SqlCommand("select * from Catogories;select * from Customers", conn); SqlDataReader reader = cmd.ExecuteReader();//仅仅读取模式信息
DataTable table = reader.GetSchemaTable();
do//首先自动定位在第一个结果集上
{
while (reader.Read())
{
Console.Write(reader[0]);
}
} while (reader.NextResult());
九、DbDataReader类
从数据源中读取行的只进流,包含SqlDataReader ,OleDbDataReader ,OdbcDataReader ,实现了IDataReader IDataRecord 接口
- 属性
IsClosed 获取一个值,该值指示数据读取器是否已关闭。
FieldCount 获取当前行中的列数。
Item[Int32] 获取位于指定索引处的列。
Item[String] 获取具有指定名称的列。
- 方法
Close() 关闭 IDataReader 对象。
GetSchemaTable() 返回一个 DataTable,它描述 IDataReader 的列元数据。
NextResult() 在读取一批 SQL 语句的结果时,使数据读取器前进到下一个结果。
Read() 让 IDataReader 前进到下一条记录。
Get***(Int32) 获取指定列的值。
GetValues(Object[]) 使用当前记录的列值填充对象的数组。
IsDBNull(Int32) 返回指定字段是否设置为 null。
十、其他
SQLCommand命令、DbTransaction事务的更多相关文章
- 假设分配给命令的连接位于本地挂起事务中,ExecuteReader 要求命令拥有事务。命令的 Transaction 属性尚未初始化
{System.InvalidOperationException: 假设分配给命令的连接位于本地挂起事务中.ExecuteReader 要求命令拥有事务.命令的 Transaction 属性尚未初始 ...
- 007-Redi-命令-脚本命令、链接命令、服务器命令、事务、HyperLogLog
Redis 脚本命令 下表列出了 redis 脚本常用命令: 序号 命令及描述 1 EVAL script numkeys key [key ...] arg [arg ...] 执行 Lua 脚本. ...
- SqlCommand对象-Transaction事务的使用
using (SqlConnection connection = new SqlConnection(connStr)) { SqlCommand sqlcmd = new SqlCommand() ...
- 如果分配给命令的连接位于本地挂起事务中,ExecuteNonQuery 要求命令拥有事务。命令的 Transaction 属性尚未初始化
DbConnection dbc = database.CreateConnection(); DbTransaction dbtt = null; try { dbc.Open(); dbtt = ...
- 积累——SQLCommand命令
SQLcommand表示要对SQL数据库运行的一个 T-SQL 语句或存储过程.以便运行大量操作或处理数据库结构. 在对数据库訪问的时候,就经经常使用到这个.看看它是怎么做到的吧! 一.属性 Comm ...
- 万字长文入门 Redis 命令、事务、锁、订阅、性能测试
作者:痴者工良 Redis 基本数据类型 Redis 中,常用的数据类型有以下几种: String:字符串类型,二进制安全字符串: Hash:哈希表: List 列表:链表结构,按照插入顺序排序的字符 ...
- TCL命令(事务控制)
确认提交DML操作:commit; 撤销DML操作:rollback; 提示:rollback撤销的是与上一个commit之间 所做的DML操作.注意:仅对 ...
- 第四章· Redis的事务、锁及管理命令
一.事务介绍 二.Redis乐观锁介绍 三.Redis管理命令 一.事务介绍 Redis的事务与关系型数据库中的事务区别 1)在MySQL中讲过的事务,具有A.C.I.D四个特性 Atomic(原子性 ...
- 8、redis之事务1-redis命令
一.概述: 和众多其它数据库一样,Redis作为NoSQL数据库也同样提供了事务机制.在Redis中,MULTI/EXEC/DISCARD/WATCH这四个命令是我们实现事务的基石.相信对有 ...
随机推荐
- 京东宙斯平台使用方法(accesstoken,appkey,appsecret参数和SDK的获取)
1.注册成为开发者 链接:https://dev.jd.com/ 2.创建应用 3.获取appsrecet和appkey,SDK(获取) 新建应用之后在左边应用证书栏位可以查看到appkey,apps ...
- 【基本优化实践】【1.6】在sql server修改且移动数据库文件位置
在master数据库中,SQL Server提供系统扩展的存储过程,其中有一些存储过程的命名以xp_开头,用于处理操作系统的文件. 一,判断文件是否存在 存储过程sys.xp_fileexist 用于 ...
- golang设置运行的核数
package main import ( "fmt" "runtime" ) //设置golang运行的核数 //1.8 版本以上的会自动设置 func ma ...
- Solr介绍 入门练习
1.1 Solr是什么 Solr是一个基于全文检索的企业级应用服务器. 全文检索:可以输入一段文字,通过分词检索数据!!(复习) 应用服务器:它是单独的服务. 1.2 Solr能做什么 它就是用于做全 ...
- Python+Appium启动手机APP或者浏览器
一.设备信息配置 脚本如下: from appium import webdriver class my_app(): def __init__(self): desired_caps = {} # ...
- 为什么用JS取不到cookie的值?解决方法如下!
注意:cookie是基于域名来储存的.要放到测试服务器上或者本地localhost服务器上才会生效.cookie具有不同域名下储存不可共享的特性.单纯的本地一个html页面打开是无效的. 明明在浏览中 ...
- 2019牛客多校三 A. Graph Games (图分块)
大意: 给定无向图, 定义$S(x)$为$x$的邻接点集合. 每次操作翻转$[L,R]$范围的边, 询问$S(x)$与$S(y)$是否相等. 快速判断集合相等可以用$CF 799F$的技巧. 采用$h ...
- CSPS2019游记
Day1: T1:格雷码?看一眼感觉是结论题,但是没头绪推不出来,硬刚40min想到$\oplus$切了. 但是没写unsigned挂了五分... T2:全场爆切人均50的题,就我一个写挂了35pts ...
- (二)手动配置第一个HelloWorld程序
上例的HelloWorld是由Android sutudio 自动生成的,现在我们手动来配置. 1. 重新创建工程 2. 创建空的Activity 生成的MainActivity.java 文件: p ...
- TeamCity安装和配置
目录 TeamCity安装和配置 前言 持续集成(CI) TeamCity 环境 安装 配置TeamCity 项目构建 效果展示 TeamCity自动构建项目及集成IDEA(待更新......) 结束 ...