c# 访问Mysql
下载Connector/Net驱动程序,并安装。
通过MySQLConnection对象来连接数据库,连接MySQL的程序的最前面需要引用MySql.Data.MySqlClient。
using MySql.Data.MySqlClient
创建MySqlConnection对象
MySqlConnection conn=null;
conn=new MySqlConnection("Data Source/Host=主机名或者ip";Initial Catalog/Database=数据库名;User ID=用户名;Password/PWD=用户密码");
Data Source/Host:表示MySQL数据库所在的计算机的主机名或者IP
Initial Catalog/Database:需要连接的数据库
创建MySQLConnection对象后,需要调用Open()函数来执行连接操作
conn.Open();
举个例子:
MySqlConnection conn=null;
conn=new MySqlConnection("Data Source/Host=localhost";Initial Catalog/Database=test;User ID=root;Password/PWD=huang");
conn.Open();//如果conn.Open()执行成功,那么conn的状态就是Open
if(conn.State.ToString=="Open")
{
Console.WriteLine("连接到MySQL数据库,连接成功!");
}
else
{
Console.WriteLine("连接失败!");
}
连接MySQL数据库之后,通过MySQLCommand对象来获取SQL语句,然后通过ExecuteNonQuery()方法对数据库进行插入、更新、和删除操作;通过ExecuteRead()方法查询数据库中的数据,也可以通过ExecuteScalar()方法查询数据;通过MySqlDataReader对象获取SELECT语句的查询结果。除了上述方法操作数据库以外,还可以使用MySqlDataAdapter对象、DataSet对象、DataTable对象来操作数据库
MySqlCommand对象主要用来管理MySqlConnector对象和SQL语句,MySqlCommand创建方法
//其中SQL语句可以是INSERT,UPDATE,DELETE,SELECT,conn为MySqlConnector对象
MySqlCommand com=new MySqlCommand ("SQL语句",conn);
//也可以通过以下方式创建MySqlCommand,这种方式可以按照需要为MySqlCommand对象添加不同的SQL语句。
MySqlCommand com=new MySqlCommand ();
com.Connection=conn;
com.CommandText="SQL语句";
插入,更新,删除数据,如果需要对数据库执行插入,更新和删除等操作,那么需要MySqlCommand对象调用ExecuteNonQuery()方法来实现。ExecuteNonQuery()方法返回一个整形的数字。下面是调用ExecuteNonQuery()方法的代码。
int i=com.ExecuteNonQuery();//com是MySqlCommand对象,com通过ExecuteNonQuery()方法执行com中的INSERT语句,UPDATE语句或者DELETE
//语句,ExecuteNonQuery()执行完成后返回影响表的行数
举个例子:
MysqlCommand com=new MySqlCommand();
com.Connection=conn;
//com对象通过CommandText获取INSERT语句
com.CommandText="INSERT INTO score VALUES(21,902,'英语',85),(22,903,'英语',90)";
int i=ExecuteNonQuery();
if(i>0)
{
Console.WriteLine("插入的记录数为:"+i);//返回值是所有SQL语句影响表的行数的总和。
}
还可以给com.CommandText传多条SQL语句,多条SQL语句都写在一个""内,并且用;隔开。举例,执行一条UPDATE,再执行一条DELETE
MysqlCommand com=new MySqlCommand();
com.Connection=conn;
//com对象通过CommandText获取INSERT语句
com.CommandText="UPDATE score SET grade=95 WHERE id=5;DELETE FROM score WHERE id=6";
int i=ExecuteNonQuery();
if(i>0)
{
Console.WriteLine("更新和删除的总记录数为:"+i);//返回值是所有SQL语句影响表的行数的总和,结果为2。
}
使用SELECT语句查询数据
ExecuteNonQuery()不能查询数据,如果要执行SELECT语句,则需要MySqlCommand对象调用ExecuteReader()方法来实现,ExecuteReader()方法返回一个MySqlDataReader对象,调用ExecuteReader()方法代码如下:
MySqlDataReader dr;
dr=com.ExecuteReader();//ExecuteReader()方法查询出来的记录都存储在dr中,通过dr调用Read()方法读取数据。如果读取到记录,Read()函数返回true。如果没有读
//取到记录,Read()函数返回false。读取到记录后通过dr["columnName"]或者dr[n]来去读相应字段的数据
下面通过ExecuteReader()方法执行一个SELECT语句,代码如下
MySqlCommand com=null;
MySqlReader dr=null;
com=new MysqlCommand("SELECT * FROM score",conn);
dr=com.ExecuteReader();
while(dr.Read())
{
Console.WriteLine(dr["id"]+" "+dr["stu_id"]+" "+dr["c_name"]+" "+dr["grade"]);
}
注:com调用ExecuteReader()方法来执行SELECT语句,执行结果返回给dr。dr调用Read()函数读取数据,如果Read()返回值为true,执行while循环。在while循环中去读每条记录的值。所有记录去读完毕后或者读取遇到错误,Read()返回false,循环结束。
一次执行多个SELECT语句
一次执行多个SELECT语句时,ExecuteReader()方法会将所有的SELECT语句的执行结果都返回给MySqlDataReader对象。但是MySqlDataReader对象一次只能够读取一个SELECT语句的查询结果。如果需要去读下一个SELECT语句的执行结果,MySqlDataReader对象需要调用NextResult()方法。NextResult()方法获取到下一个SELECT语句的查询结果时,该方法返回true。然后MySqlDataReader对象可以通过Read()函数来读取数据,如果NextResult()方法返回值为false,那么说明结果全部都读取出来了。
实例代码:
MySqlCommand com=null;
MySqlReader dr=null;
//将com实例化,并将两个SELECT语句传递给com
com=new MysqlCommand("SELECT * FROM score;SELECT * FROM Student",conn);
dr=com.ExecuteReader();
while(dr.Read())
{
Console.WriteLine(dr["id"]+" "+dr["stu_id"]+" "+dr["c_name"]+" "+dr["grade"]);
}
if(dr.NextResult())//dr.NextResult()方法最好和while循环一起使用
{
while(dr.Read())
{
Console.WriteLine(dr["id"]+" "+dr["name"]+" "+dr["address"]+" "+dr["department"]);
}
}
c# 访问Mysql的更多相关文章
- java文件来演示如何访问MySQL数据库
java文件来演示如何访问MySQL数据库. 注:在命令行或用一个SQL的前端软件创建Database. 先创建数据库: CREATE DATABASE SCUTCS; 接着,创建表: CREATE ...
- PHP访问MySql数据库介绍
在网站后台,经常要与数据库打交道.本文介绍如何使用XAMPP来管理MySql数据库及如何用PHP来访问MySql数据库. 一.使用XAMPP来管理MySql数据库 首先使用XAMPP打开MySql的管 ...
- PHP的MySQL扩展:PHP访问MySQL的常用扩展函数
来源:http://www.ido321.com/1024.html 一.PHP连接数据库及基本操作 MySQL采用的是’客户机/服务器’架构.使用PHP安装的MySQL扩展函数,和直接使用客户端软件 ...
- C#连接、访问MySQL数据库
一.准备工具 visual stuido(本示例使用visual studio 2010) MySql.Data.dll mysql_installer_community_V5.6.21.1_set ...
- 本地tomcat访问mysql数据库
虽然以前经常听人说起过tomcat,但是今天头一次使用tomcat. 1.Tomcat的安装过程: 首先应该从Apache官方网站上下载是用于Windows的.zip压缩包. 下面是相应的下载链接: ...
- 在Eclipse中使用JDBC访问MySQL数据库的配置方法
在Eclipse中使用JDBC访问MySQL数据库的配置方法 分类: DATABASE 数据结构与算法2009-10-10 16:37 5313人阅读 评论(10) 收藏 举报 jdbcmysql数据 ...
- C#访问MySQL数据库(winform+EF)
原文:C#访问MySQL数据库(winform+EF) 以前都是C#连接SQLServer,现在MySQL也比较火了,而且是开源跨平台的,这里连接使用一下,主要是体会一下整个流程,这里使用的是winf ...
- python访问mysql和redis
1. 修改mysql配置文件 修改bind-address=0.0.0.0(允许通过远程网络连接) 2. 修改redis配置文件 修改bind-address=0.0.0.0(允许通过远程网络连接), ...
- python访问mysql
1,下载mysql-connector-python-2.0.4 pythoin访问mysql需要有客户端,这个就是连接mysql的库 解压后如下图: 双击lib 以windows为例 把mysql ...
- Spring Boot入门(六):使用MyBatis访问MySql数据库(注解方式)
本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 本篇博客我们讲解下在Spring Boot中使用MyBatis访问MySql数据库的简单用法. 1.前期 ...
随机推荐
- 本文将介绍“数据计算”环节中常用的三种分布式计算组件——Hadoop、Storm以及Spark。
本文将介绍“数据计算”环节中常用的三种分布式计算组件——Hadoop.Storm以及Spark. 当前的高性能PC机.中型机等机器在处理海量数据时,其计算能力.内存容量等指标都远远无法达到要求.在大数 ...
- JAVA 字节流和字符流度读写的区别
java处理文件的类里面,stream结尾都是采用字节流,reader和writer结尾都是采用字符流.两者的区别就是读写的时候一个是按字节读写,一个是按字符. 字符流的底层就是字节流.而字符流主要是 ...
- pat 甲级 1053. Path of Equal Weight (30)
1053. Path of Equal Weight (30) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...
- 冬训day3 简单数据结构
A - 简单计算器 模拟加栈..写一写就好,从头到尾扫一遍,分两个栈存,一个存运算符,一个存中间结果,遇到乘除就先处理了,每次遇到加减就处理上一个加减的两个数,结果压进去...同时把这个运算符存进去. ...
- luogu 1258 小车问题 小学奥数(?)
题目链接 题意 甲.乙两人同时从A地出发要尽快同时赶到B地.出发时A地有一辆小车,可是这辆小车除了驾驶员外只能带一人.已知甲.乙两人的步行速度一样,且小于车的速度.问:怎样利用小车才能使两人尽快同时到 ...
- TCP/IP协议详解笔记——IP协议
简介 TCP/IP协议族中最核心的协议,提供不可靠.无连接的数据报传输服务. 不可靠:不能保证IP数据报能成功送达. 无连接:并不维护后续数据报的状态信息,每个数据报的处理都是相互独立.数据报可能不会 ...
- 转 c++多线程编程
c++多线程编程 一直对多线程编程这一块很陌生,决定花一点时间整理一下. os:ubuntu 10.04 c++ 1.最基础,进程同时创建5个线程,各自调用同一个函数 #include <io ...
- golang xorm MSSQL where查询案例
xorm官方中文文档 参考 http://xorm.io/docs/ 以sqlserver为例 先初始化连接等... engine, err := xorm.NewEngine("mssql ...
- 怎样录制简单GIF动图
看到视频里的精彩画面,想用动图的形式保存下来,应该如何录制呢,今天就介绍一款小巧实用,操作简单的软件,GifCam 2.0 汉化绿色版.相比其它的录制软件,它是免费无水印又可以在线录制的. 本来学习一 ...
- Codeforces 597C 子序列
题面 [题目描述] 给你一个包含n个不同元素的序列,让你求出在这个序列中有多少个长度为k+1的上升子序列.保证答案不会超过8*10^18. [输入描述] 第一行包括两个正整数n和k(1<=n&l ...