专业IT网络知识平台,分享IT百科知识、生活百科知识解答!

易企推科技
易企推科技

mysql数据库连接方法,mysql数据库连接

来源:小易整编  作者:小易  发布时间:2023-03-20 07:47
摘要:mysql数据库连接方法,mysql数据库连接依赖插件MySql.Data安装 使用之前需要先在vs中安装MySql.Data插件,本文采用Nuget方式安装 ,步骤如下:选中项目右键——》管理Nuget程序包 输入 MySql.Data...

mysql数据库连接方法,mysql数据库连接

mysql数据库连接方法,mysql数据库连接

依赖插件

MySql.Data安装 

  • 使用之前需要先在 vs中安装MySql.Data 插件,本文采用 Nuget 方式安装 ,步骤如下:

    • 选中项目右键——》管理Nuget程序包 

    • 输入 MySql.Data ,搜索安装即可

mysql数据库连接方法,mysql数据库连接

编辑

连接数据库的基本对象介绍

  • 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();    }  }}


本文地址:IT问答频道 https://www.hkm168.com/itwenda/933849.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


IT问答
小编:小易整编
相关文章相关阅读
  • mysql中的不等于符号是什么

    mysql中的不等于符号是什么

    mysql中的不等于符号有两种:“!=”和“”;它们都可用于判断数字、字符串、表达式是否不相等。对于“!=”和“”,如果两侧操作数不相等,返回值为1,否则返回值为0;如果两侧操作数有一个是null,那么返回值也是null。本教程操作环境:w...

  • wifi连接速度什么意思

    wifi连接速度什么意思

    wifi中的连接速度是数据理论传输速度。wifi连接速度与上网速度不是同一个概念,wifi连接速度必须大于上网速度才稳定。wifi连接速度是路由器与上网设备连接的速度,一般现在主流的路由器都在150M以上,而上网速度是指运营商提供的网络接口...

  • mysql列转行函数是什么

    mysql列转行函数是什么

    在mysql中,列转行函数是“group_concat()”函数;该函数用于将非空列值按照分组条件进行合并并最终返回,如果其中有空值则返回的结果是空,语法为“selectgroup_concat(name separator';')列...

  • MySQL连接被重置,如何处理?

    MySQL连接被重置,如何处理?

    mysql连接被重置,如何处理?MySQL是一种常用的关系型数据库管理系统,广泛应用于各种不同规模的项目中。然而,在使用MySQL时,有时会遇到连接被重置的情况,这可能会给我们的项目带来一些麻烦。本文将介绍MySQL连接被重置的原因以及如何...

  • 数据库的substr函数用法是什么

    数据库的substr函数用法是什么

    数据库的substr函数用法:1、【substr(str,pos,len)】从pos开始的位置,截取len个字符;2、【substr(str,pos)】pos开始的位置,一直截取到最后。数据库的substr函数用法:1、SUBSTR(st...

  • mysql环境变量如何配置

    mysql环境变量如何配置

    mysql环境变量的配置方法:1、找到c盘中的mysql安装路径;2、在“我的电脑"中,依次点击“系统属性”-“高级系统设置”选项;3、在“环境变量”弹窗中,依次点击“高级”-“系统变量”;4、找到path路径,点击“编辑”选项,......

  • 什么是数据库架构?数据库架构有几层

    什么是数据库架构?数据库架构有几层

    一:什么是数据库架构DBMS体系结构有助于数据库的设计,开发,实现和维护,数据库可以存储企业的关键信息,选择正确的数据库体系结构有助于快速安全地访问数据。二:数据库架构有几层1层架构最简单的数据库体系结构是1层,其中客户端,服务器和数据库都...

  • 关系型数据库系统事务的ACID特性是什么

    关系型数据库系统事务的ACID特性是什么

    关系型数据库系统事务的acid特性:1、原子性;事务里的所有操作要么全部做完,要么都不做。2、一致性;数据库要一直处于一致的状态。3、独立性;并发的事务之间不会互相影响。4、持久性;一旦事务提交后,它所做的修改将会永久的保存在数据库上。本教...

  • 周排行
  • 月排行
  • 年排行

精彩推荐