0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

连接Mysql数据库

汽车电子技术 来源:程序猿知秋 作者:程序猿知秋 2023-02-28 09:50 次阅读

图片

依赖插件

**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

    文章

    61

    浏览量

    38028
  • MySQL
    +关注

    关注

    1

    文章

    775

    浏览量

    26005
  • 插件
    +关注

    关注

    0

    文章

    313

    浏览量

    22198
收藏 人收藏

    评论

    相关推荐

    如何在Rust中连接和使用MySQL数据库

    如何在Rust中连接和使用MySQL数据库。 安装 mysql 模块 这里我们假设你已经安装了Rust编程语言工具链,在本教程中,我们将使用 mys
    的头像 发表于 09-30 17:05 919次阅读

    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

    labview连接mysql数据库的问题

    这个ODBC数据流已经成功设置了,为什么用labview连接mysql数据库就出现这个错误呢?望大神解答,谢谢啦!
    发表于 08-19 08:30

    labview连接mysql数据库失败,原因何在。

    `使用ODBC连接mysql时,测试连接成功;但是使用labview连接mysql时,测试连接
    发表于 11-29 17:02

    采用hqC连接mysql数据库

    eclipse连接mysql(80)的版本问题
    发表于 04-30 10:27

    Python连接MySQL数据库及模块封装

    python连接mysql与sql server数据库及相应的模块封装
    发表于 05-01 16:06

    如何使用原生hqc连接MySQL数据库

    springboot项目中使用原生hqc连接MySQL数据库
    发表于 06-08 12:12

    c#如何连接mysql数据库

    (visual studio)c#连接mysql数据库
    发表于 06-13 20:56

    python如何连接MySql数据库

    Python入门(python连接MySql数据库)还能怎么记,大开眼界!
    发表于 06-14 07:48

    Java通过驱动包连接MySQL数据库的步骤总结及验证

    Java通过驱动包(jar包)连接MySQL数据库---步骤总结及验证
    发表于 06-15 16:57

    分享一个简单的连接MYSQL数据库的小功能

    LabSQL连接数据库的小demo,供大家指正交流
    发表于 06-18 14:14

    ESP8266如何连接mysql数据库

    各位大神,我试图用ESP8266 连接mysql ,将温湿度传感器的数据,写入数据库mysql数据库
    发表于 01-12 09:22

    用JDBC连接MySQL数据库并进行简单的增删改查操作

    本文主要详细讲解了用JDBC连接MySQL数据库并进行简单的增删改查操作。Java 数据库连接是Java语言中用来规范客户端程序如何来访问
    发表于 02-06 09:21 6195次阅读
    用JDBC<b class='flag-5'>连接</b><b class='flag-5'>MySQL</b><b class='flag-5'>数据库</b>并进行简单的增删改查操作

    如何连接Mysql数据库

    使用之前需要先在 vs中安装MySql.Data 插件
    的头像 发表于 01-20 15:04 660次阅读
    如何<b class='flag-5'>连接</b><b class='flag-5'>Mysql</b><b class='flag-5'>数据库</b>