c#操作mysql数据库
1、下载mysql.Data.dll,在解决方案->引用中引入,并在文件头部引入
using MySql.Data.MySqlClient;
2、创建MySqlConnection对象(链接库)
string connstr = "data source=localhost;database=cs_test;user id=root;password=123456;pooling=false;charset=utf8";//pooling代表是否使用连接池 MySqlConnection conn = new MySqlConnection(connstr);
3、创建对应操作的MySqlCommand对象(测试数据库表名characters,属性列:id,names,passwords)
string sql = "select * from characters"; MySqlCommand cmd = new MySqlCommand(sql,conn);
4、针对不同操作,MySqlCommand对象有三个常用方法
(1)查找多行 : ExecuteReader()方法
返回一个MysqlDataReader对象,包含多个行,可以用其Read方法逐行读取。
对于每行元素,可以用getXXX()方法读取属性值,XXX为该属性类型,参数为属性名或者该属性为这张表的第几列。
可以用IsDBNull()方法判断是否为空,参数只能是该属性为这张表的第几列(即只能是数字)
conn.Open(); MySqlDataReader reader = cmd.ExecuteReader(); Console.WriteLine("id\t姓名\t密码"); while (reader.Read()) { Console.Write(reader.GetInt32("id")+"\t"); if (reader.IsDBNull(1)) { Console.Write("空\t"); } else { Console.Write(reader.GetString("names")+"\t"); } if (reader.IsDBNull(2)) { Console.Write("空\n"); } else { Console.Write(reader.GetString("passwords")+"\n"); } } conn.Close();
(2)查找单个: ExecuteScalar()
返回值为查找到的元祖第一个属性,以object类型返回
string sql2 = "select names from characters where id=2"; MySqlCommand cmd2 = new MySqlCommand(sql2,conn); conn.Open(); string names = cmd2.ExecuteScalar().ToString(); Console.WriteLine(names); conn.Close();
(3)增、删、改: ExecuteNonQuery()
返回值为int,不成功是0,成功是1
string sql3 = "insert into characters (names,passwords) values ('XXX','1234456')"; MySqlCommand cmd3 = new MySqlCommand(sql3,conn); conn.Open(); int s = cmd3.ExecuteNonQuery(); if (s == 0) Console.WriteLine("false"); else Console.WriteLine("success"); conn.Close();
5、完整代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using MySql.Data.MySqlClient; namespace mysql_test { class mysqlcz{ public mysqlcz() { string connstr = "data source=localhost;database=csceshi;user id=root;password=123456;pooling=false;charset=utf8"; using (MySqlConnection conn = new MySqlConnection(connstr)) { string sql = "select * from characters"; MySqlCommand cmd = new MySqlCommand(sql,conn); conn.Open(); MySqlDataReader reader = cmd.ExecuteReader(); Console.WriteLine("id\t姓名\t密码"); while (reader.Read()) { Console.Write(reader.GetInt32("id")+"\t"); if (reader.IsDBNull(1)) { Console.Write("空\t"); } else { Console.Write(reader.GetString("names")+"\t"); } if (reader.IsDBNull(2)) { Console.Write("空\n"); } else { Console.Write(reader.GetString("passwords")+"\n"); } } conn.Close(); string sql2 = "select names from characters where id=2"; MySqlCommand cmd2 = new MySqlCommand(sql2,conn); conn.Open(); string names = cmd2.ExecuteScalar().ToString(); Console.WriteLine(names); conn.Close(); string sql3 = "insert into characters (names,passwords) values ('XXX','1234456')"; MySqlCommand cmd3 = new MySqlCommand(sql3,conn); conn.Open(); int s = cmd3.ExecuteNonQuery(); if (s == 0) Console.WriteLine("false"); else Console.WriteLine("success"); conn.Close(); } Console.ReadLine(); } } class Program { static void Main(string[] args) { mysqlcz mt = new mysqlcz(); } } }
6、sql语句参数化
为防止sql注入,尽量不要使用字符串拼接的方法拼接sql字符串
string uname=Console.ReadLine(); string upwd=Console.ReadLine();//获取用户输入 string sql="insert into characters (names,passwords) values (@name,@pwd)";//使用@符构造sql变量 MysqlCommand cmd = new MysqlCommand(sql,conn); //使用MysqlCommand对象的parameters属性,该属性为像sql语句传递的参数集合,使用add方法向其中添加参数,参数以MysqlParameters对象形式传递 cmd.parameters.Add(new MysqlParametes("@name",uname)); cmd.parameters.Add(new MysqlParameters("@pwd",upwd)); conn.Open(); cmd.ExecuteNonQuery(); conn.Close();
C# 利用mysql.data 在mysql中创建数据库及数据表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
|
相关文章
- MySQL存储过程详解 mysql 存储过程
- VS2013与MySql建立连接;您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库 EF6使用Mysql的技巧
- c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询
- MySQL函数
- MySQL事务的隔离级别以及脏读、幻读和不可重复读
- Mysql 中有关日期的函数(sql)
- MySQL mysqldump备份数据库及恢复数据库(mysql命令)
- mysql数据库提示本地无法连接远程服务器(Host is not allowed to connect to this MySQL server)解决办法
- C#Winform使用mysql作为本地数据库
- 【MySQL】如何向mysql数据库插入当前时间
- 基于C#+MySQL 实现(WinForm)开发小型的宾馆管理系统【100010293】
- MariaDB/MySQL备份和恢复(三):xtrabackup用法和原理详述
- 转 【MySQL】常用拼接语句 shell 下执行mysql 命令
- python操作mysql数据库系列-操作MySql数据库(五)
- mysql group by 与order by的实例分析(mysql分组统计后最大值)
- c# 连接mysql配置config,不用装net connector
- (5.7)mysql高可用系列——MySQL中的GTID复制(理论篇)【转】
- (5.6)mysql高可用系列——MySQL Utilities 管理工具
- (5.5)mysql高可用系列——MySQL半同步复制(实践)
- 【转】MySQL Utilities,mysql工具包
- mysql和sql server的按组连接
- navicat查看MySQL数据库、表容量大小
- [Mysql] REPLACE函数