返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#中的SQLCommand命令与DbTransaction事务处理
  • 743
分享到

C#中的SQLCommand命令与DbTransaction事务处理

2024-04-02 19:04:59 743人浏览 安东尼
摘要

一、sqlDataReader SqlConnection conn = new SqlConnection("server=10.126.64.11;user=it_oper;pw

一、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。

到此这篇关于C#SQLCommand命令与DbTransaction事务处理的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C#中的SQLCommand命令与DbTransaction事务处理

本文链接: https://lsjlt.com/news/148548.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#中的SQLCommand命令与DbTransaction事务处理
    一、SqlDataReader SqlConnection conn = new SqlConnection("server=10.126.64.11;user=it_oper;pw...
    99+
    2024-04-02
  • ADO.NET事务问题处理命令方法
    这篇文章主要讲解了“ADO.NET事务问题处理命令方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ADO.NET事务问题处理命令方法”吧!ADO.NET事务提供两个对象用于检索关系型数据并...
    99+
    2023-06-17
  • C++中有哪些预处理命令
    本篇文章给大家分享的是有关C++中有哪些预处理命令,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C++预处理命令1、#define命令#define定义了一个标识符及一个串。在...
    99+
    2023-06-17
  • 详解C语言中的预处理命令
    目录一、预处理命令简介二、宏定义1、宏定义的定义2、宏定义的使用3、宏定义的终止——#undef三、文件包含初学C语言的时候,我们会在开头写下一句话,#inc...
    99+
    2022-12-08
    C语言预处理命令 C语言预处理
  • C语言中有哪些预处理命令
    C语言中有哪些预处理命令,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一 #define命令#define定义了一个标识符及一个串。在源程序中每次遇到该标识符时,均以定义的串代...
    99+
    2023-06-17
  • C语言中的预处理命令怎么使用
    这篇“C语言中的预处理命令怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言中的预处理命令怎么使用”文章吧。一、预...
    99+
    2023-07-04
  • c语言的预处理命令有哪些
    C语言的预处理命令有以下几种:1. #include:用于包含头文件。2. #define:用于定义宏。3. #ifdef、#ifn...
    99+
    2023-08-18
    c语言
  • C语言宏定义与预处理命令怎么应用
    这篇文章主要介绍了C语言宏定义与预处理命令怎么应用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言宏定义与预处理命令怎么应用文章都会有所收获,下面我们一起来看看吧。宏定义与预处理命令预处理阶段:处理宏定义与...
    99+
    2023-07-02
  • 批处理中Copy与Xcopy命令有哪些区别
    这篇文章主要介绍了批处理中Copy与Xcopy命令有哪些区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Copy与Xcopy的区别一,copy不能在有子目录存在的文件中拷贝...
    99+
    2023-06-08
  • C语言详细分析宏定义与预处理命令的应用
    目录宏定义与预处理命令预处理命令 - 宏定义定义符号常量定义傻瓜表达式定义代码段预定义的宏函数 VS 宏定义预处理命令 - 条件式编译示例宏定义与预处理命令 预处理阶段:处理宏定义与...
    99+
    2024-04-02
  • C语言之预处理命令的深入讲解
    c提供的预处理功能有: 宏定义 文件包含 条件编译 为了与其她c语句区分,命令经常以符号“#”开头。 宏定义 #define 标识符 字符串 可以避免反复输入字符串...
    99+
    2024-04-02
  • C语言之预处理命令的示例分析
    这篇文章主要介绍C语言之预处理命令的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!c提供的预处理功能有:宏定义文件包含条件编译为了与其她c语句区分,命令经常以符号“#”开头。宏定义#define 标识符 字符...
    99+
    2023-06-14
  • bat批处理中for命令的用法
    小编给大家分享一下bat批处理中for命令的用法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!格式:FOR [参数] %%变量名 IN (相关文件或命令) DO ...
    99+
    2023-06-08
  • 多行命令中的批处理注释
    在批处理脚本中,可以使用`REM`关键字来添加注释。注释是用来解释脚本的目的、功能和特点的文字。以下是在多行命令中添加注释的示例:`...
    99+
    2023-09-26
    批处理
  • 批处理中的echo命令怎么用
    这篇文章主要介绍了批处理中的echo命令怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 Echo显示当前ECHO的状态:ECHO ON 或者ECHO OFF ECHO ...
    99+
    2023-06-08
  • Java与C#事件处理的对比是怎样的
    本篇文章给大家分享的是有关Java与C#事件处理的对比是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。小编分别介绍Java与C#事件处理,包括介绍在C#中,事件(Even...
    99+
    2023-06-17
  • redis中事务命令的介绍和使用
    这篇文章将为大家详细讲解有关redis中事务命令的介绍和使用,文章内容质量较高,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、概述:Redis 事务的本质是一组命令的集合。事务支持一次执...
    99+
    2024-04-02
  • Redis中事务操作的命令有哪些
    小编给大家分享一下Redis中事务操作的命令有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!命令multi与exec命令行127.0.0.1:6379> multi O...
    99+
    2024-04-02
  • Linux curl命令中 HTTP 302的处理方法
    本篇内容主要讲解“Linux curl命令中 HTTP 302的处理方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux curl命令中 HTTP 302的处理方法”吧!Linux系统中...
    99+
    2023-06-16
  • Node.js 事件循环中的错误处理与异常处理
    ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作