C#操作DbCommand类
一、常用属性
名称 | 说明 |
CommandText | 获取或设置要对数据源执行的 Transact-SQL 语句、表名或存储过程 |
CommandTimeout | 获取或设置在终止执行命令的尝试并生成错误之前的等待时间 |
CommandType | 获取或设置一个值,该值指示释 CommandText 是SQL语句,存储过程还是表操作 |
Connection | 获取或设置 DbCommand 的此实例使用的 DbConnection |
Parameters | 获取 DbParameterCollection |
Transaction | 获取或设置将在其中执行 DbCommand 的 DbTransaction |
using MySql.Data.MySqlClient;
using System;
using System.Data.Common; namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
string str = string.Format("Server={0};Port={1};Database={2};Uid={3};Pwd={4};",
"localhost", , "wisdompurchase", "root", "");
DbConnection conn = new MySqlConnection(str); //创建连接
//连接的数据库名称
DbCommand cmd = conn.CreateCommand();
cmd.CommandText = "Update Person Set Name = 'Ado.net修改' WHERE Id = @Id"; //设置操作语句
//看看默认的发生错误等待时间(秒)
Console.WriteLine(cmd.CommandTimeout); //30
//指明CommandText是SQL语句,存储过程还是表操作。枚举类型,转到定义可看
Console.WriteLine(cmd.CommandType); //输出 Text 表示这是一条SQL语句
//SqlCommand的SqlConnection实例对象
Console.WriteLine(cmd.Connection.ConnectionString); //"server=.;database=JunTest;uid=sa;pwd=123";
//设置参数值
cmd.Parameters.Add(new MySqlParameter("@Id", ));
Console.WriteLine(cmd.Parameters["@Id"].Value); //输出1 conn.Open();
conn.Close();
Console.ReadKey();
}
}
}
二、常用方法
1、ExecuteNonQuery() 增删改操作
增、删、改都是这个:
using MySql.Data.MySqlClient;
using System;
using System.Data.Common; namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
string str = string.Format("Server={0};Port={1};Database={2};Uid={3};Pwd={4};",
"localhost", , "wisdompurchase", "root", "");
DbConnection conn = new MySqlConnection(str); //创建连接
//连接的数据库名称
DbCommand cmd = conn.CreateCommand(); //创建命令
cmd.CommandText = "Update t_s_base_user Set realname = '李伟斌' WHERE Id = @Id"; //设置操作语句
cmd.Parameters.Add(new MySqlParameter("@Id",MySqlDbType.VarChar)); //设置参数值
cmd.Parameters["@Id"].Value = ;
conn.Open(); //打开连接
int i = cmd.ExecuteNonQuery(); //执行命令,ExecuteNonQuery由名称看出,只能用于非查询语句
conn.Close(); //关闭连接
Console.WriteLine(i); //输出影响行数 Console.ReadKey();
}
}
}
2、ExecuteScalar() 返回第一行第一列
3、ExecuteReader() 创建一个SqlDataReader用于读取数据
using MySql.Data.MySqlClient;
using System;
using System.Data.Common; namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
string str = string.Format("Server={0};Port={1};Database={2};Uid={3};Pwd={4};",
"localhost", , "wisdompurchase", "root", "");
DbConnection conn = new MySqlConnection(str); //创建连接
//连接的数据库名称
DbCommand cmd = conn.CreateCommand(); //创建命令
cmd.CommandText = "SELECT * FROM `t_s_base_user` LIMIT 5"; //设置操作语句
conn.Open(); //打开连接
//SqlDataReader读取数据
using (DbDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine(reader[] + ":" + reader[]); //输出当前行的第一列,第二列数据
}
} cmd.CommandText = "SELECT Count(*) FROM `t_s_base_user`";
object obj = cmd.ExecuteScalar(); //仅查询第一行第一列
Console.WriteLine(Convert.ToInt32(obj));
conn.Close(); //关闭连接 Console.ReadKey();
}
}
}
4、ExecuteXmlReader() 返回System.XmlReader实例,用于读取SQLServer中的XML字段的值
首先建一张表如下:
/*
SQLyog Ultimate v11.33 (64 bit)
MySQL - 5.7.17-log
*********************************************************************
*/
/*!40101 SET NAMES utf8 */; insert into `article` (`ArticleId`, `ArticleInfo`) values('','<Article><author age=\"30\">张三</author><length>12000</length><price>42</price></Article>');
ArticleSql
其中ArticleInfo字段的数据类型为xml,值为:
<Article><author age="30">张三</author><length>12000</length><price>42</price></Article>
下面,我们使用ExecuteXmlReader()读取出author的值:
using System;
using System.Data.Common;
using System.IO;
using System.Xml; namespace ConsoleApp
{
public static class ExtensionDbCommand
{
public static XmlReader ExecuteXmlReader(this DbCommand cmd)
{
object obj = cmd.ExecuteScalar(); //仅查询第一行第一列
if (obj == null) return null;
StringReader strRdr = new StringReader(Convert.ToString(obj));
return XmlReader.Create(strRdr);
}
}
}
ExtensionDbCommand
using MySql.Data.MySqlClient;
using System;
using System.Data.Common;
using System.Xml; namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
string str = string.Format("Server={0};Port={1};Database={2};Uid={3};Pwd={4};",
"localhost", , "wisdompurchase", "root", "");
DbConnection conn = new MySqlConnection(str); //创建连接
//连接的数据库名称
DbCommand cmd = conn.CreateCommand(); //创建命令
conn.Open(); //打开连接
cmd.CommandText = "SELECT ArticleInfo FROM Article LIMIT 1"; //查询XML字段
using (XmlReader reader = cmd.ExecuteXmlReader()) //由Command实例返回XmlReader的实例
{
while (reader!=null && reader.Read())
{
if (reader.Name == "author")
{
Console.WriteLine(reader.ReadInnerXml()); //输出张三
}
}
}
conn.Close();
Console.ReadKey();
}
}
}
Program
还有就是以上这些方法的异步版本,本处仅以以下两个方法示例:
5、BeginExecuteNonQuery() 异步版ExecuteNonQuery()
6、EndExecuteNonQuery() 异步版ExecuteNonQuery()
using MySql.Data.MySqlClient;
using System;
using System.Data.Common; namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
string str = string.Format("Server={0};Port={1};Database={2};Uid={3};Pwd={4};",
"localhost", , "wisdompurchase", "root", "");
DbConnection conn = new MySqlConnection(str); //创建连接
//连接的数据库名称
MySqlCommand cmd = (MySqlCommand)conn.CreateCommand(); //创建命令
cmd.CommandText = "INSERT INTO `article` VALUES(2,'郭嘉')"; //设置操作语句
conn.Open(); //打开连接
cmd.BeginExecuteNonQuery(BeginCallback, cmd); //异步执行语句
Console.WriteLine("不管你执没执行完,我继续做我的事!"); Console.ReadKey();
} static void BeginCallback(IAsyncResult result)
{
Console.WriteLine("正在执行SQL命令!");
MySqlCommand cmd = result.AsyncState as MySqlCommand; //获得异步传入的参数
Console.WriteLine("成功执行命令:" + cmd.CommandText);
Console.WriteLine("本次执行影响行数为:" + cmd.EndExecuteNonQuery(result));
Console.WriteLine("关闭连接!");
cmd.Connection.Close(); //正式关闭连接
}
}
}
Program
C#操作DbCommand类的更多相关文章
- XML格式示例 与 XML操作(读取)类封装
header('Content-Type: text/xml'); <?xml version="1.0" encoding="utf-8" standa ...
- 简洁的PHP操作SQLite类
SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了. ...
- C#工具类:Json操作帮助类(转载)
原文转载自C#工具类:Json操作帮助类_IT技术小趣屋. Json序列化和反序列化在程序开发中时常会遇到,在C#中可以使用很多种方法实现对数据的Json序列化和反序列化,封装一个Json操作工具类来 ...
- 【转载】C#工具类:Json操作帮助类
Json序列化和反序列化在程序开发中时常会遇到,在C#中可以使用很多种方法实现对数据的Json序列化和反序列化,封装一个Json操作工具类来简化相应的操作,该工具类中包含以下功能:对象转JSON.数据 ...
- 【转载】微软官方提供的Sqlserver数据库操作帮助类SQLHelper类
在.NET平台中,C#语言一般使用ADO.NET组件来操作Sqlserver数据库,通过ADO.NET组件可以实现连接数据库.查询数据集.执行SQL语句以及关闭数据库连接等操作,为此网上有很多开发者自 ...
- oracleHelper 操作帮助类
using System; using System.Configuration; using System.Data; using System.Collections; using Oracle. ...
- Java反射机制demo(六)—获得并操作一个类的属性
Java反射机制demo(六)—获得并操作一个类的属性 获得并操作一个类的属性?! 不可思议啊,一个类的属性一般都是私有成员变量啊,private修饰符啊! 但是毫无疑问,这些东西在Java的反射机制 ...
- 第三百零七节,Django框架,models.py模块,数据库操作——表类容的增删改查
Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...
- 五 Django框架,models.py模块,数据库操作——表类容的增删改查
Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...
随机推荐
- python property对象
一.从@porperty说起 Python内置的@property装饰器是负责把一个方法变成属性调用的 class Stu(object): def __init__(self,age): self. ...
- 学习Python第七天
进制拾遗: 二进制:01 八进制:01234567 十进制:0123456789 十六进制:0123456789ABCDEF 十进制转换八,十六进制语法 oct()八进制 关于8进制是逢8进一位的,我 ...
- QT汇总
1.QT介绍及其在Linux下的安装 2.windows下安装QT并与visual studio 2017搭建开发环境 参考资料: QT官网资料 QT实战一二三 Qt资料大全 <Qt 实战一二三 ...
- ansible 关闭ssh首次连接时提示
关闭ssh首次连接时提示. 修改/etc/ansible/ansible.cfg配置文件 方法一:(推荐,配置文件中存在) host_key_checking = False 方法二: ssh_arg ...
- Django 信号、中间件、i18n 专题
信号 Django中提供了“信号调度”,用于在框架执行操作时解耦.通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者. 1. Django内置信号 Model signals pr ...
- Openvswitch手册(1): 架构,SSL, Manager, Bridge
Openvswitch是一个virutal swtich, 支持Open Flow协议,当然也有一些硬件Switch也支持Open Flow协议,他们都可以被统一的Controller管理,从而实现物 ...
- MySQL--MHA与GTID
##==========================================## MySQL 5.6版本引入GTID来解决主从切换时BINLOG位置点难定位的问题,MHA从0.56版本开始 ...
- Java工程师如何在1个月内做好面试准备?
作者:石杉的架构笔记 写在前面 春节长假转眼已过,即将迎来的是一年一度的金三银四跳槽季. 假如你准备在金三银四跳槽的话,那么作为一个Java工程师,应该如何利用1个月的时间,快速的为即将到来的面试进行 ...
- Mybatis3.2不支持Ant通配符TypeAliasesPackage扫描的解决方案
业务场景 业务场景:首先项目进行分布式拆分之后,按照模块再分为为api层和service层,web层. 其中订单业务的实体类放在com.muses.taoshop.item.entity,而用户相关的 ...
- FileZilla 使用笔记
FileZilla 使用了三年了,一些功能其实还没有主动去发现,这次接着项目忙完的空闲时间整理一下 Tips,提高工作效率,方便以后查阅. 一.好用的功能 1.Site Manager - 站点管理器 ...