一、常用属性

名称 说明
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类的更多相关文章

  1. XML格式示例 与 XML操作(读取)类封装

    header('Content-Type: text/xml'); <?xml version="1.0" encoding="utf-8" standa ...

  2. 简洁的PHP操作SQLite类

    SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了. ...

  3. C#工具类:Json操作帮助类(转载)

    原文转载自C#工具类:Json操作帮助类_IT技术小趣屋. Json序列化和反序列化在程序开发中时常会遇到,在C#中可以使用很多种方法实现对数据的Json序列化和反序列化,封装一个Json操作工具类来 ...

  4. 【转载】C#工具类:Json操作帮助类

    Json序列化和反序列化在程序开发中时常会遇到,在C#中可以使用很多种方法实现对数据的Json序列化和反序列化,封装一个Json操作工具类来简化相应的操作,该工具类中包含以下功能:对象转JSON.数据 ...

  5. 【转载】微软官方提供的Sqlserver数据库操作帮助类SQLHelper类

    在.NET平台中,C#语言一般使用ADO.NET组件来操作Sqlserver数据库,通过ADO.NET组件可以实现连接数据库.查询数据集.执行SQL语句以及关闭数据库连接等操作,为此网上有很多开发者自 ...

  6. oracleHelper 操作帮助类

    using System; using System.Configuration; using System.Data; using System.Collections; using Oracle. ...

  7. Java反射机制demo(六)—获得并操作一个类的属性

    Java反射机制demo(六)—获得并操作一个类的属性 获得并操作一个类的属性?! 不可思议啊,一个类的属性一般都是私有成员变量啊,private修饰符啊! 但是毫无疑问,这些东西在Java的反射机制 ...

  8. 第三百零七节,Django框架,models.py模块,数据库操作——表类容的增删改查

    Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...

  9. 五 Django框架,models.py模块,数据库操作——表类容的增删改查

    Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...

随机推荐

  1. 自由拖拽DIV实现

    最近在做的项目有个效果是要实现div随意拖拽改变大小,前端框架选择的是vue.js,UI用的是element,拖拽效果可以很简单的实现,但是在拖拽过程中发现会对其他元素实现全选效果,因此最后选择使用元 ...

  2. xx系统属性分析

    在本周的课程学习当中,我们简单了解到系统的一些属性,同时在课下也对<大型网站技术架构:核心原理与案例分析>进行了初步的阅读. 在书籍中我看到了许多其他的知识,也对课堂学习的知识有了巩固,现 ...

  3. vue数据双向绑定

    Vue的双向绑定是通过数据劫持结合发布-订阅者模式实现的,即通过Object.defineProperty监听各个属性的setter,然后通知订阅者属性发生变化,触发相应的回调. 整个过程分为以下几步 ...

  4. JSTL配置文件下载地址

    Apache Tomcat安装JSTL 库步骤如下: 从Apache的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip). 官方下载地址:http:/ ...

  5. Android中自定义Preference

    一.需求 开发横屏设备的app时,发现preference显示的都是上下结构,因此需要自定义preference实现横屏显示. 二.layout实现 <?xml version="1. ...

  6. Openvswitch手册(7): Interfaces

    我们来看Interfaces ofport: OpenFlow port number for this interface. type: system: An ordinary network de ...

  7. 【腾讯Bugly干货分享】职场中脱颖而出的成长秘诀

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/uQKpVg7HMLfogGzzMyc9iQ 导语 时光 ...

  8. Dubbo 源码分析 - 服务调用过程

    注: 本系列文章已捐赠给 Dubbo 社区,你也可以在 Dubbo 官方文档中阅读本系列文章. 1. 简介 在前面的文章中,我们分析了 Dubbo SPI.服务导出与引入.以及集群容错方面的代码.经过 ...

  9. 【CF429E】 Points and Segments(欧拉回路)

    传送门 CodeForces 洛谷 Solution 考虑欧拉回路有一个性质. 如果把点抽出来搞成一条直线,路径看成区间覆盖,那么一个点从左往右被覆盖的次数等于从右往左被覆盖的次数. 发现这个性质和本 ...

  10. 关于Python打开IDLE出现错误的解决办法

    安装好python,打开IDLE出现以下错误: 解决办法: 修改[Python目录]\Lib\idlelib\PyShell.py文件,在1300行附近,将def main():函数下面use_sub ...