依赖插件
**MySql.Data安装 **
- 使用之前需要先在 vs中安装MySql.Data 插件,本文采用 Nuget 方式安装 ,步骤如下:
- **选中项目右键——》管理Nuget程序包 **
- 输入 MySql.Data ,搜索安装即可
编辑
连接数据库的基本对象介绍
- MySqlConnection: 数据库连接对象
- MySqlCommand: sql语句执行对象
- MySqlDataReader:包含sql语句执⾏的结果,并提供⼀个⽅法从结果中阅读⼀⾏
- MySqlTransaction: sql事务管理对象
- MySqlException: 报错时返回的Exception。
- MySqlCommandBuilder:自动生成命令,该命令用于MySQL数据库协调对数据集所做的更改
- MySqlDataAdapter: 表示一组数据命令和数据库连接,用于填充数据集和更新MySQL数据库
- MySqlHelper:提供帮助的工具类
sql执行方法
ExcuteNonQuery
: 执行【insert(增)】、【updata(改)】、【delete(删)】语句ExcuteReader
: 执行多行查询,返回DataReader对象ExcuteScalar
: 执行单行查询,返回查询结果的首行数据
DataTable和DataSet 容器
- 可以把DataTable和DataSet看做是数据容器,比如你查询数据库后得到一些结果,可以放到这种容器里
- **DataSet **可以比作一个内存中的数据库
- **DataTable **是一个内存中的数据表
- DataSet 里可以存储多个DataTable
- 数据结果 直接放到 dataTable中
DataTable dt = new DataTable();
MySqlDataAdapter DataAdapter = new MySqlDataAdapter(sql, conn);
// 将数据填充到dataTable中
DataAdapter.Fill(dt);
- 数据结果 直接放到 dateSet 中
DataSet ds = new DataSet();
MySqlDataAdapter DataAdapter = new MySqlDataAdapter(sql, conn);
// 将数据填充到dataSet中
DataAdapter.Fill(ds);
- ****数据结果放到dataset中,若要用那个datatable,可以这样:dataset[0] ****
DataSet ds = new DataSet();
MySqlDataAdapter DataAdapter = new MySqlDataAdapter(sql, conn);
// 将数据填充到dataSet中
DataAdapter.Fill(ds);
DataTable td = ds.Tables[0]
Mysql的增删改查(CRUD)
创建Mysql连接
- 方式一: 通过 MySqlConnectionStringBuilder 对象
public MySqlConnection createConnect()
{
// 数据连接的基本信息对象
MySqlConnectionStringBuilder scsb = new MySqlConnectionStringBuilder();
scsb.UserID = "root";
scsb.Server = "127.0.0.1";
scsb.Port = 3306;
scsb.Password = "123456";
scsb.Database = "account_center";
MySqlConnection mySqlConnection = new MySqlConnection(scsb.ConnectionString);
mySqlConnection.Open();
Console.WriteLine("数据库连接成功!");
return mySqlConnection;
}
- 方式二: 直接通过字符串,然后new MySqlConnection
public MySqlConnection createConnect2()
{
// 数据连接的基本信息对象
string conStr = "server=127.0.0.1;database=account_center;username=root;password=123456;";
MySqlConnection mySqlConnection = new MySqlConnection(conStr);
mySqlConnection.Open();
return mySqlConnection;
}
MySqlDataAdapter 方式
查询数据表数据(无参数)
public void queryNoArg(MySqlConnection conn)
{
string sql = "select * from user_test ";
DataTable dt = new DataTable();
try
{
MySqlDataAdapter DataAdapter = new MySqlDataAdapter(sql, conn);
// 将数据填充到dataTable中
DataAdapter.Fill(dt);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
// 关闭连接
conn.Close();
}
// 打印表数据
printData(dt);
}
打印数据方法
public void printData(DataTable dt)
{
if (dt.Rows.Count < 0)
{
return;
}
//打印所有列名
string columnName = string.Empty;
for (int i = 0; i < dt.Columns.Count; i++)
{
columnName += dt.Columns[i].ColumnName + " | ";
}
Console.WriteLine(columnName);
Console.WriteLine("-------------------------");
//打印每一行的数据
foreach (DataRow row in dt.Rows)
{
string columnStr = string.Empty;
foreach (DataColumn column in dt.Columns)
{
columnStr += row[column] + " | ";
}
Console.WriteLine(columnStr);
}
}
输出结果
name | age | create_date |
-------------------------
张三 | 12 | 2023/1/4 17:17:24 |
李四 | 33 | 2023/1/4 17:17:24 |
查询数据表数据(带参数)
public void queryByArg(MySqlConnection conn)
{
string sql = "select * from user_test where name=@p1 and age=@p2 ";
DataTable dt = new DataTable();
try
{
// 建立命令执行对象
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = conn;
cmd.CommandText = sql;
// 设置命令的类型,普通的sql命令是字符串的用Text即可 ,如果是存储过程则用 CommandType.StoredProcedure
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@p1", "张三");
cmd.Parameters.AddWithValue("@p2", 12);
MySqlDataAdapter DataAdapter = new MySqlDataAdapter(cmd);
// 将数据填充到dataTable中
DataAdapter.Fill(dt);
// 释放资源
DataAdapter.Dispose();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
// 关闭连接
conn.Close();
}
// 打印表数据
printData(dt);
}
输出结果
name | age | create_date |
-------------------------
张三 | 12 | 2023/1/4 17:17:24 |
MySqlDataReader 方式
查询数据表数据
public void ExecuteReader(MySqlConnection connection)
{
string sql = "select * from user_test ";
MySqlCommand cmd = new MySqlCommand(sql, connection);
MySqlDataReader myReader = null;
try
{
myReader = cmd.ExecuteReader();
// 打印数据
printByReader(myReader);
}
catch (Exception e)
{
throw new Exception(e.Message);
}
finally
{
connection.Close();
cmd.Dispose();
}
}
打印数据方法
public void printByReader(MySqlDataReader myReader)
{
if (myReader==null)
{
return;
}
//打印所有列名
string columnName = string.Empty;
for (int i = 0; i < myReader.FieldCount; i++)
{
columnName += myReader.GetName(i) + " | ";
}
Console.WriteLine(columnName);
Console.WriteLine("-------------------------");
//打印每一行的数据
while (myReader.Read())
{
string columnStr = string.Empty;
for (int i = 0; i < myReader.FieldCount; i++)
{
columnStr += myReader[i].ToString() + " | ";
}
Console.WriteLine(columnStr);
}
// 释放资源
myReader.Close();
}
输出结果
name | age | create_date |
-------------------------
张三 | 12 | 2023/1/4 17:17:24 |
李四 | 33 | 2023/1/4 17:17:24 |
修改表数据都用 ExecuteNonQuery() 方法
ExecuteNonQuery() 适用于 添加、修改、删除 相关的sql操作
public int updateData(MySqlConnection conn)
{
// 添加数据
string addSql = "insert into user_test(name,age,create_date) values('王五',14,now())";
// 修改数据
string updateSql = "update user_test set age=55 where name='李四'";
// 删除数据
string delSql = "delete from user_test where name = '张三'";
MySqlCommand cmd = new MySqlCommand(addSql, conn);
try
{
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch (Exception e)
{
conn.Close();
//throw e;
Console.WriteLine(e.Message);
}
finally
{
cmd.Dispose();
conn.Close();
}
return -1;
}
数据库事务(MySqlTransaction类)
事务执行过程:
- 开启
- 提交 -- 正常
- 回滚 -- 出现问题
**事务管理 **
- BeginTransaction(): 开启事务, 只要未提交,期间执行的数据更新相关的操作都不会生效
- transaction.Commit(): 提交事务,提交后,数据更新
- transaction.Rollback(): 回滚事务,回滚后,之前执行的数据更新操作都将失效
public void TransactionTest(MySqlConnection conn)
{
string sql = "insert into user_test(name,age,create_date) values('bbb',224,now())";
// 开启事务
MySqlTransaction transaction = conn.BeginTransaction();
try
{
MySqlCommand cmd = new MySqlCommand(sql, conn);
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
// 事务回滚
transaction.Rollback();
conn.Close();
}
finally
{
if (conn.State != ConnectionState.Closed)
{
//事务要么回滚要么提交,即Rollback()与Commit()只执行一个
transaction.Commit();
conn.Close();
}
}
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
Data
+关注
关注
0文章
62浏览量
38246 -
MySQL
+关注
关注
1文章
802浏览量
26466 -
插件
+关注
关注
0文章
323浏览量
22415
发布评论请先 登录
相关推荐
如何在Rust中连接和使用MySQL数据库
如何在Rust中连接和使用MySQL数据库。 安装 mysql 模块 这里我们假设你已经安装了Rust编程语言工具链,在本教程中,我们将使用 mys
labview连接mysql数据库
=127.0.0.1;UID=root;DATABASE=mxjtest;PORT=3306";用以上语句为什么不行求解数据库用户root密码100200就连自己电脑上的数据库
发表于 10-09 14:44
labview 连接mysql 数据库的问题
`我根据网络上的教程想用labsql 做个连接mysql的vi,但是就是连接不上数据库。(已经新建数据源DSN)求教下,字符串 3,4 是不
发表于 01-07 22:06
用JDBC连接MySQL数据库并进行简单的增删改查操作
本文主要详细讲解了用JDBC连接MySQL数据库并进行简单的增删改查操作。Java 数据库连接是Java语言中用来规范客户端程序如何来访问
发表于 02-06 09:21
•6299次阅读
评论