zoukankan      html  css  js  c++  java
  • C# MariaDB 连接,关闭,创建、增、删、查、改

    最近项目用到C# 以及MariaDB相关知识,在此小计一下。

    关于MariaDB的安装使用参照以下连接文档:

    MariaDB安装与使用_HeidiSQL工具_IT_wind007的博客-CSDN博客

    自带的HeidiSQL工具觉得界面不太友好,于是自己下载了一个Navicat进行操作,相关操作参照以下连接文档:

    Navicat使用快速入门教程_苜苜的烂笔头的博客-CSDN博客_navicat使用教程详解

    以上步骤完成以后,打开C#工程,C#工程中的“引用”——添加——扩展——勾选MySql.Data,确认即可使用

    在需要使用数据库操作的文件头添加  using MySql.Data.MySqlClient;

    即可调用相关操作。

    1、数据库连接

     1         public bool ConnectToSql()
     2         {
     3 
     4             // 对象转字符串方法
     5             MySqlConnectionStringBuilder builder = new MySqlConnectionStringBuilder();
     6             builder.Database = "plc_control";   // 数据库名
     7             builder.Server = "localhost";     // IP
     8             builder.Port = 3306;                // 端口号
     9             builder.UserID = "root";            // 用户名
    10             builder.Password = "root";          // 密码
    11             builder.CharacterSet = "utf8mb4";   // 编码格式
    12 
    13             if (null == conn)
    14             {
    15                 conn = new MySqlConnection(builder.ToString());
    16             }
    17 
    18             try
    19             {
    20                 conn.Open();
    21 
    22                 //在open之后调用就可以避免creatTable报错
    23                 MySqlCommand setcmd = new MySqlCommand("SET character_set_results=utf8mb4", conn);
    24                 int n = setcmd.ExecuteNonQuery();
    25                 setcmd.Dispose();
    26 
    27                 Console.WriteLine("连接成功!!!");
    28 
    29                 return true;
    30             }
    31             catch (Exception e1)
    32             {
    33                 Console.WriteLine("打印抛出:" + e1.ToString() + builder.ToString());
    34                 return false;
    35             }
    36         }

    2、数据库关闭

     1     public void CloseConn()
     2         {
     3             if (null != conn)
     4             {
     5                 if (conn.State == ConnectionState.Open)
     6                 {
     7                     conn.Close();
     8                     Console.WriteLine("正常关闭!!!");
     9                 }
    10             }
    11         }

    3、创建(create table)

     1         private void CreatActionLogTable()
     2         {
     3             string strCreat = string.Format(@"CREATE TABLE IF NOT EXISTS actionlog(
     4                                   `time` datetime DEFAULT NULL,
     5                                   `user` varchar(24) DEFAULT NULL,
     6                                   `log` varchar(200) DEFAULT NULL
     7                                 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;");
     8 
     9             ExecuteQuery(strCreat);
    10         }
    11 
    12 
    13      private void ExecuteQuery(string strCreat)
    14         {
    15             try
    16             {
    17                 MySqlCommand myCmd = new MySqlCommand(strCreat, conn);
    18                 myCmd.ExecuteNonQuery();
    19             }
    20             catch (MySqlException ex) {
    21                 Console.WriteLine("err:"+ex.Message);
    22             }
    23         }

    4、增(insert)数据的批处理操作

     1      //插入指令的批处理操作
     2         public void ExecuteSqlTranssaction(List<string> sqlStrList)
     3         {
     4             //创建执行命令的command对象
     5             MySqlCommand command = new MySqlCommand();
     6             command.Connection = conn;
     7 
     8             //开启mysql事务
     9             MySqlTransaction transaction = conn.BeginTransaction();
    10             command.Transaction = transaction;
    11 
    12             try
    13             {
    14 
    15                 if (sqlStrList.Count > 1)
    16                 {
    17                     for (int i = 0; i < sqlStrList.Count; i++)
    18                     {
    19                         string sqlStr = sqlStrList[i].ToString();
    20                         if (sqlStr.Trim().Length > 1)
    21                         {
    22                             command.CommandText = sqlStr;
    23                             command.ExecuteNonQuery();
    24                         }
    25 
    26                         if (i > 0 && (i % 500 == 0
    27                             || i == sqlStrList.Count - 1))
    28                         {
    29                             transaction.Commit();
    30 
    31                             if (i != sqlStrList.Count - 1)
    32                             {
    33                                 transaction = conn.BeginTransaction();
    34                             }
    35                         }
    36                     }
    37                 }
    38                 else
    39                 {
    40                     for (int i = 0; i < sqlStrList.Count; i++)
    41                     {
    42                         string sqlStr = sqlStrList[i].ToString();
    43                         if (sqlStr.Trim().Length > 1)
    44                         {
    45                             command.CommandText = sqlStr;
    46                             command.ExecuteNonQuery();
    47 
    48                             transaction.Commit();
    49 
    50                         }
    51                     }
    52                 }
    53             }
    54             catch (MySqlException err)
    55             {
    56 
    57                 Console.WriteLine("ExecuteSqlTranssaction error!!!" + err.ToString());
    58 
    59                 transaction.Rollback();
    60                 throw new Exception(err.Message);
    61 
    62             }
    63         }
    64 
    65         private void Insert2actionlog(C_ActionLog tmpActionLog)
    66         {
    67             string sqlStr = string.Format("insert into actionlog (time,user,log) " +
    68                            "values('{0}','{1}','{2}');",
    69                            tmpActionLog.dateTime,
    70                            tmpActionLog.user,
    71                            tmpActionLog.logInfo);
    72 
    73             Console.WriteLine(sqlStr);
    74 
    75             actSqlStrList.Add(sqlStr);
    76         }

    5、删(delete) 整理碎片

     1     //多条删除
     2         public int DeleteLog(DateTime sTime, DateTime endTime) {
     3 
     4             string startTimeStr = sTime.ToString();
     5             string endTimeStr = endTime.ToString();
     6 
     7             //需要挑选日期 
     8             string sqlStr = string.Format("DELETE FROM actionlog WHERE time BETWEEN '{0}' AND '{1}' LIMIT 10000;", startTimeStr, endTimeStr);
     9 
    10             ExecuteQuery(sqlStr);
    11 
    12             //刪除数据以后,整理碎片  大量数据才需要用到
    13             string alterStr = string.Format("alter table actionlog engine = innodb,ALGORITHM=INPLACE, LOCK=NONE;");
    14             ExecuteQuery(alterStr);
    15 
    16             return 0;
    17         }

    6、查(select)

     1         //获取日志
     2         public void SelectLogFromSql(short timeFlag, DateTime sTime, DateTime eTime, out List<C_ActionLog> logList)
     3         {
     4 
     5             logList = new List<C_ActionLog>();
     6 
     7             string sqlStr = "SELECT * FROM actionlog ";
     8             string timeStr = "";
     9             string endStr = ";";
    10             string startTimeStr = sTime.ToString();
    11             string endTimeStr = eTime.ToString();
    12             if (1 == timeFlag)
    13             {//需要挑选日期 
    14                 timeStr = string.Format("WHERE time BETWEEN '{0}' AND '{1}' ", startTimeStr, endTimeStr);
    15 
    16             }
    17 
    18             sqlStr += timeStr + endStr;
    19 
    20             Console.WriteLine(sqlStr);
    21 
    22             MySqlCommand command = new MySqlCommand(sqlStr, conn);
    23             MySqlDataReader reader = command.ExecuteReader();
    24 
    25             while (reader.Read())
    26             {
    27                 C_ActionLog ectionLog = new C_ActionLog();
    28 
    29                 ectionLog.dateTime = reader.GetDateTime("time");
    30                 ectionLog.user = reader.GetString("user");
    31                 ectionLog.logInfo = reader.GetString("log");
    32 
    33                 logList.Add(ectionLog);
    34             }
    35 
    36             reader.Close();
    37         }

    7、改(Update)

    1   updateStr = string.Format("UPDATE equipcraftconf SET id={0},craftName='{1}' WHERE staNo={2} AND craftNo={3};",
    2                     equipCraftConf.id,
    3                     equipCraftConf.craftInfo.craftName,
    4                     equipCraftConf.craftInfo.staNo,
    5                     equipCraftConf.craftInfo.craftNo          
    6                     );
    7 
    8  ExecuteQuery(updateStr);
  • 相关阅读:
    Github
    Vocabulary in Computer
    js中三种定义变量的方式const, var, let的区别
    Node.js-1
    JSON_in_js
    JSON快速入门
    Mysql tinyint长度为1时在java中被转化成boolean型
    maven上解决循环依赖、又不想新加第三模块的方法
    关于springboot和tomcat的服务能力做下简单的测试
    tomcat各个端口的作用
  • 原文地址:https://www.cnblogs.com/wanzaiyimeng/p/15759729.html
Copyright © 2011-2022 走看看