一、常用属性

名称 说明
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. 【pycharm】pycharm修改文件名快捷键

    shift+F6 修改文件名 --------------------------------------------------

  2. 《python语言程序设计》_第6章_函数

    # 6.1_引言 程序1: 结果: Sum from 1 to 10 is 55Sum from 20 to 38 is 513Sum from 35 to 50 is 630 程序2: #程序1和2 ...

  3. 天气预报demo (ShareREC 官网 MobAPI)

    第一步 自己注册一个应用,然后获取里面的 App Key,下载MobAPI SDK 然后拖入 MobAPI.framework 和 MOBFoundation.framework 到你的项目中 官网是 ...

  4. Pi的计算

    百度百科           圆周率用希腊字母 π(读作pài)表示,是一个常数(约等于3.141592654),是代表圆周长和直径的比值.它是一个无理数,即无限不循环小数.在日常生活中,通常都用3. ...

  5. wechat.php

    <?php/***Author @zhongbo * 步骤说明* 1,微信服务器返回一个会话ID* 2.通过会话ID获得二维码* 3.轮询手机端是否已经扫描二维码并确认在Web端登录* 4.访问 ...

  6. 应用监控CAT之cat-home源码阅读(三)

    上两章从点到点讲了,cat-client  到  cat-consumer 的请求处理过程,但是怎么样让我们监控给人看到呢?那么就需要一个展示的后台了,也就是本章要讲的 cat-home 模块 ! 带 ...

  7. Java虚拟机知识汇总

    先膜一波布丁大佬hhh

  8. Linux 下 Shell 的自动交互

    在编写脚本的时候经常会遇到这种情况,某些程序的命令执行的之后可能会要求用户进行输入,这个时候就需要一些特殊写法来应对这种问题了.这里参考 这篇文章提到可以使用 delimiter 分界符来解决. 也就 ...

  9. JavaScript逗号操作符

    今天在CSDN看到一篇文章http://www.csdn.net/article/2014-01-06/2818025-Useful-JavaScript-Tips-Best-Practices?re ...

  10. 给iPhone手机安装*.ipa

    首先手机连接电脑,打开 ITunes. 左上角点击文件,再点击添加到资料库. 找到你要安装的ipa点击选择打开 好了ipa已经添加进去后,你会看你你刚才添加进去的应用在列表内,点击左上角一个手机的图标 ...