专业汉语词典知识平台,分享汉字词语知识、历史文学知识解答!

励北网
励北网

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


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


百科问答
小编:小易整编
相关文章相关阅读
  • 虚拟网络连接怎么建立

    虚拟网络连接怎么建立

    当我们使用Win7系统时,因为某些原因需要建立虚拟网络连接,但是我们不知道如何操作怎么办?该如何才能创建好虚拟的网络连接呢?下面小编就为大家奉上一个图文并茂的教程。  1.右键点击桌面的“网络”->“属性”,打开“网络和共享中心”界面......

  • win10如何连接手机

    win10如何连接手机

    现在大部分电脑都是win10系统,最近推出了连接手机功能,很多人不知道如何操作,接下来小编就给大家介绍一下具体的步骤。具体如下:1.首先第一步点击左下角【开始菜单】图标,在弹出的窗口中根据下图箭头所指,点击【设置】选项。2.第二步打开【...

  • P2P网络连接是什么意思?

    P2P网络连接是什么意思?

    P2P网络是指点对点网络,指的是一种分散式的网络架构,它将计算机直接连接在一起,以共享存储、带宽和处理能力,而不是通过一个中央服务器进行交互。P2P网络连接允许用户共享数据和文件,而不必依靠传统的服务器或云存储。在P2P网络连接中,每个参...

  • 笔记本电脑怎么连接手机上的热点进行上网

    笔记本电脑怎么连接手机上的热点进行上网

    今天给大家介绍一下笔记本电脑怎么连接手机上的热点进行上网的具体操作步骤。1.首先确认一下手机的移动网络是否打开了。2.打开之后,进入设置页面。3.然后找到页面上的“个人热点”选项,打开4.进入页面后,点击“设置WLAN热点”选项5....

  • 数据库管理是什么意思?

    数据库管理是什么意思?

    数据库管理是指通过数据库管理系统来管理、访问存储在数据库中的数据的过程。它也和实现电子档案库、图书馆的相关软件的开发有着密切的联系。数据库管理特别强调数据的独立性和可移植性,从而保证数据的可靠性和安全性。数据库管理的主要作用,是把一些内容...

  • 智能手机如何连接无线网络

    智能手机如何连接无线网络

    智能手机如何连接无线网络呢?下面小编来教大家。操作方法01首先,我们打开我们的手机,然后点击手机桌面上的设置;02进入设置之后,我们点击无线和网络;...

  • 苹果无线键盘怎么连接电脑

    苹果无线键盘怎么连接电脑

    苹果无线键盘是一款无线键盘,是为Macintosh电脑和兼容的iOS设备设计的。是通过蓝牙连接电脑使用的,接下来就介绍一下如何将键盘连接到电脑。操作方法01首先在电脑的悬浮栏中选择“系统偏好设置”并点...

  • 共享网络打印机连接正常,但无法打印

    共享网络打印机连接正常,但无法打印

    共享网络打印机连接正常还是会出现无法打印的情况。今天小编就给大家说下。操作方法01首先检查网线是否是否接触不良。看硬件网卡是否松动造成的。02如果都连接正常得开...

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

精彩推荐