zoukankan      html  css  js  c++  java
  • C#操作MYSQL数据库

    目录

    1、准备步骤

    2、MYSQL操作流程

    3、MYSQL的C#中的类

    4、简单实例

    总结:可以把对数据库的操作写成一个个的函数,写到一个helpsql类中,到时候使用的时候就可以直接调用,MYSQL和SQL SERVER 操作是一样的,只不过就是MYSQL要自己下载API 接口,SQL SERVER 不用下载,其他的操作都是一样的。花了一个的时间写,写博客真是累啊,写博客要趁热打铁,昨晚项目后要马上开始记录,不要拖,不然就当时候忘了又要重新开始。还有碰的很好的博客,可以转载过来当做资料开看,应该要对照着他的思路,自己做一遍,而不是看懂就行了,知易行难啊!!!!


    1、准备步骤

    1.网上下载MySql.Data.dll

    2.在项目当中添加引用MySql.Data.dll

    3.在操作类当中添加:

      using MySql.Data;

      using MySql.Data.MySqlClient;

     


    2、MYSQL操作流程 

    第一步:使用SqlConnection对象连接数据库

    第二步:建立SqlCommand对象,执行SQL语句

    第三步:对SQL语句执行后的结果进行操作

    对返回的结果分为两类

      一、用SqlDataReader直接一行一行的读取数据集;

         二、DataSet联合DataAdapter来操作数据库

     


     

    3、MYSQL的C#中的类

    1、SqlConnection类

      构造函数:SqlConnection(connstr);

      属性:  Database//获取当前数据库或连接打开后要使用的数据库的名称

           Connectionstring//获取或设置用于打开 SQL Server 数据库的字符串

      方法:  Open()

           Close()

             Dispose()//释放所有资源

           
    2、SqlCommand类
      

       构造函数:SqlCommand(string,conn)

           属性:  CommandType//获取或设置一个值,该值指示如何解释 CommandText 属

            CommandText //获取或设置要对数据源执行SQL 语句

            Connection//获取或设置 SqlCommand 的此实例使用的 SqlConnection

            Parameters//获取 SqlParameterCollection。参数集合

           方法:  ExecuteNonQuery(): 返回受影响函数,如增、删、改操作;

             ExecuteScalar():执行查询,返回首行首列的结果;

            ExecuteReader():返回一个数据流(SqlDataReader对象)。

     

      实例1:

         SqlCommand cmd = new  SqlCommand ()

         cmd.connection =conn;

         cmd.CommandType = CommandType.Text;

         cmd.CommandText ="select *from produce=@ID";

         cmd.Parameters.Add("@ID",SqlDBType.NVarChar,10,ID).values=1;

         cmd.ExecuteScalar();

      实例2:

      SqlCommand cmd = new  SqlCommand (“select *from test”,conn);

      cmd.ExecuteScalar();

     

    注意:  ExecuteNonQuery()方法主要用户更新数据,通常它使用Update,Insert,Delete语句来操作数据库,其方法返回值意义:对于 Update,Insert,Delete  语句 执行成功是返回值为该命令所影响的行数,如果影响的行数为0时返回的值为0,如果数据操作回滚得话返回值为-1,对于这种更新操作 用我们平时所用的是否大于0的判断操作应该没有问题而且比较好,但是对于其他的操作如对数据库结构的操作,如果操作成功时返回的却是-1,这种情况跟我们平时的思维方式有点差距所以应该好好的注意了,

     3、SqlDataReader类

      是由ExecuteReader()返回一个数据流(SqlDataReader对象)没有构造方法

      属性:Connection//获取与 SqlDataReader 关联的 SqlConnection

         FieldCount//获取当前行中的列数。

         HasRows//获取一个值,该值指示 SqlDataReader 是否包含一行或多行

           RecordsAffect//获取执行 Transact-SQL 语句所更改、插入或删除的行数

      方法:Read();//使 SqlDataReader 前进到下一条记录

         GetType();//获取当前实例的 Type

         NextResult();//当读取批处理 Transact-SQL 语句的结果时,使数据读取器前进到下一个结果

     

    4、SqlDataApater类

      构造方法:SqlDataApater()

           SqlDataAdapter(SqlCommand)//初始化 SqlDataAdapter 类的新实例,用指定的 SqlCommand 作为 SelectCommand 的属性。

           SqlDataApater(string,conn)//使用 SelectCommand 和 SqlConnection 对象初始化 SqlDataAdapter 类的一个新实例

      属性:  DeleteCommand

           SelectCommand

             InsertCommand

           UpdataCommand           

      方法:    Fill(DataSet)//在 DataSet 中添加或刷新行

             Fill(DataTable)//在 DataSet 的指定范围中添加或刷新行,以与使用 DataTable 名称的数据源中的行匹配。 (继承自DbDataAdapter

           Update(DataRow[])//通过为 DataSet 中的指定数组中的每个已插入、已更新或已删除的行执行相应的 INSERT、UPDATE 或 DELETE 语句来更新数据库中的值

           Update(DataSet)//通过为指定的 DataTable 中的每个已插入、已更新或已删除的行执行相应的 INSERT、UPDATE 或 DELETE 语句来更新数据库中的值

           Update(DataTable)

     

        实例1

      // 隐藏了SqlCommand对象的定义,同时隐藏了SqlCommand对象与SqlDataAdapter对象的绑定

         SqlDataAdapter  myda= new  SqlDataAdapter("select * from test",conn);

      实例2

      SqlCommand mySqlCommand = new SqlCommand();// 创建SqlCommand

      mySqlCommand.CommandType = CommandType.Text;

      mySqlCommand.CommandText = "select * from product";

      mySqlCommand.Connection = sqlCnt;

      SqlDataAdapter myDataAdapter = new SqlDataAdapter();   // 创建SqlDataAdapter

        myDataAdapter.SelectCommand = mySqlCommand; // 为SqlDataAdapter对象绑定所要执行的SqlCommand对象

    5、DataSet类  

      命名空间:System.Data.DataSet。

      数据集,本地微型数据库,可以存储多张表。

     //使用DataSet第一步就是将SqlDataAdapter返回的数据集(表)填充到Dataset对象中:  

    SqlDataAdapter myDataAdapter = new SqlDataAdapter("select * from product", sqlCnt);
    DataSet myDataSet = new DataSet();        // 创建DataSet
    myDataAdapter.Fill(myDataSet, "product");    // 将返回的数据集作为“表”填入DataSet中,表名可以与数据库真实的表名不同,并不影响后续的增、删、改等操作

    //访问dataset中的数据
    DataTable myTable = myDataSet.Tables["product"];
    foreach (DataRow myRow in myTable.Rows) {
        foreach (DataColumn myColumn in myTable.Columns) {
            Console.WriteLine(myRow[myColumn]);    //遍历表中的每个单元格
        }
    }

    // 修改DataSet
    DataTable myTable = myDataSet.Tables["product"];
    foreach (DataRow myRow in myTable.Rows) {
        myRow["name"] = myRow["name"] + "商品";
    }
    
    // 将DataSet的修改提交至“数据库”
    SqlCommandBuilder mySqlCommandBuilder = new SqlCommandBuilder(myDataAdapter);
    myDataAdapter.Update(myDataSet, "product");

    // 添加一行
    DataRow myRow = myTable.NewRow();
    myRow["name"] = "捷安特";
    myRow["price"] = 13.2;
    //myRow["id"] = 100; id若为“自动增长”,此处可以不设置,即便设置也无效
    myTable.Rows.Add(myRow);
    
    // 将DataSet的修改提交至“数据库”
    SqlCommandBuilder mySqlCommandBuilder = new SqlCommandBuilder(myDataAdapter);
    myDataAdapter.Update(myDataSet, "product");

    // 删除第一行
    DataTable myTable = myDataSet.Tables["product"];
    myTable.Rows[0].Delete();
    
    SqlCommandBuilder mySqlCommandBuilder = new SqlCommandBuilder(myDataAdapter);
    myDataAdapter.Update(myDataSet, "product");

     

    4、简单的例子

    简单实例1:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using MySql.Data;
     6 using MySql.Data.MySqlClient;
     7 
     8 namespace mysqltest
     9 {
    10     class Program
    11     {
    12         static void Main(string[] args)
    13         {
    14           string connstr = "Server=localhost;Uid=root;Pwd=mhl83905590;Database=yuangong";
    15           using (MySqlConnection conn = new MySqlConnection(connstr))
    16           {
    17               try
    18               {
    19                   conn.Open();
    20                   MySqlCommand cmd = new MySqlCommand("select * from yg_table", conn);
    21                   MySqlDataReader reader = cmd.ExecuteReader();
    22                   int j = reader.FieldCount;
    23                   for (int i = 0; i < j; i++)
    24                   {
    25                       Console.Write(reader.GetName(i));
    26                       Console.Write("\t");
    27                   }
    28                   Console.Write("\n");
    29                   Console.Write(reader.GetType()+"\n");
    30                   
    31                   while (reader.Read())
    32                   {
    33                       if (reader.HasRows)
    34                       {
    35                           for (int i = 0; i < j; i++)
    36                           {
    37                               Console.Write(reader[i]);
    38                               Console.Write("\t");
    39 
    40                           }
    41                           Console.Write("\n");
    42                       }
    43                   }
    44                   
    45                   reader.Close();
    46               }
    47               catch (MySqlException ex)
    48               {
    49                   Console.Write(ex.ToString());
    50 
    51               }
    52               finally
    53               {
    54                   conn.Close();
    55               }
    56  
    57           }
    58          
    59         }
    60     }
    61 }
    View Code


    简单实例2:

      1 using System;
      2 using System.Collections.Generic;
      3 using System.Linq;
      4 using System.Text;
      5 using MySql.Data;
      6 using MySql.Data.MySqlClient;
      7 using System.Data;
      8 
      9 namespace mysqltest
     10 {
     11     class Program
     12     {
     13         static void Main(string[] args)
     14         {
     15           string connstr = "Server=localhost;Uid=root;Pwd=mhl83905590;Database=yuangong";
     16           using (MySqlConnection conn = new MySqlConnection(connstr))
     17           {
     18               try
     19               {
     20                   conn.Open();
     21                   MySqlDataAdapter adapter = new MySqlDataAdapter("select * from yg_table", conn);
     22 
     23                   DataSet ds = new DataSet();
     24 
     25                   adapter.Fill(ds, "yg_table");
     26 
     27                   DataTable mytable = ds.Tables["yg_table"];
     28                   for (int i = 0; i < 5;i++ )
     29                       Console.Write(mytable.Columns[i].ColumnName+"\t");
     30                   Console.Write("\n");
     31 
     32                   foreach (DataRow myRow in mytable.Rows)
     33                   {
     34                       foreach (DataColumn myColumn in mytable.Columns)
     35                           Console.Write(myRow[myColumn]+"\t");
     36                       Console.Write("\n");
     37                   }
     38                   Console.Write(mytable.TableName+"\n");
     39 
     40                   //修改
     41                   //foreach (DataRow myRow in mytable.Rows)
     42                   //{
     43                   //    myRow["name"] = "小明";
     44                   //}
     45                   //MySqlCommandBuilder mycmdbuilder = new MySqlCommandBuilder(adapter);
     46                   //adapter.Update(ds, "yg_table");
     47 
     48                   //增加一行
     49                   //DataRow mynewRow = mytable.NewRow();
     50                   //mynewRow["id"] = 6;
     51                   //mynewRow["name"] = "小雷";
     52                   //mynewRow["sex"] = "女";
     53                   //mynewRow["age"] = 12;
     54                   //mynewRow["menoy"] = 12;
     55                   //mytable.Rows.Add(mynewRow);                
     56                   //MySqlCommandBuilder mycmdbuilder = new MySqlCommandBuilder(adapter);
     57                   //adapter.Update(ds, "yg_table");
     58 
     59                   //删除一行
     60 
     61                   mytable.Rows[6].Delete();
     62                   MySqlCommandBuilder mycmdbuilder = new MySqlCommandBuilder(adapter);
     63                   adapter.Update(ds, "yg_table");
     64 
     65                   for (int i = 0; i < 5; i++)
     66                       Console.Write(mytable.Columns[i].ColumnName + "\t");
     67                   Console.Write("\n");
     68 
     69                   foreach (DataRow myRow in mytable.Rows)
     70                   {
     71                       foreach (DataColumn myColumn in mytable.Columns)
     72                           Console.Write(myRow[myColumn] + "\t");
     73                       Console.Write("\n");
     74                   }
     75                  
     76                   //MySqlCommand cmd = new MySqlCommand("select * from yg_table", conn);
     77                   //MySqlDataReader reader = cmd.ExecuteReader();
     78                   //int j = reader.FieldCount;
     79                   //for (int i = 0; i < j; i++)
     80                   //{
     81                   //    Console.Write(reader.GetName(i));
     82                   //    Console.Write("\t");
     83                   //}
     84                   //Console.Write("\n");
     85                   //Console.Write(reader.GetType()+"\n");
     86                   
     87                   //while (reader.Read())
     88                   //{
     89                   //    if (reader.HasRows)
     90                   //    {
     91                   //        for (int i = 0; i < j; i++)
     92                   //        {
     93                   //            Console.Write(reader[i]);
     94                   //            Console.Write("\t");
     95 
     96                   //        }
     97                   //        Console.Write("\n");
     98                   //    }
     99                   //}
    100                   
    101                   //reader.Close();
    102               }
    103               catch (MySqlException ex)
    104               {
    105                   Console.Write(ex.ToString());
    106 
    107               }
    108               finally
    109               {
    110                   conn.Close();
    111               }
    112  
    113           }
    114          
    115         }
    116     }
    117 }
    View Code

     

     

  • 相关阅读:
    没吃过猪肉,却想见识下猪跑
    程序员修电脑
    csdn 新排名系统参考的部分指标
    如何快速适应新工作
    前端学习指北
    公号文章整理
    BUI 视频,音频在线播放
    原生图片上传,图片格式和图片大小处理
    获取路由拼接参数
    Axure RP9调用后端接口操作步骤
  • 原文地址:https://www.cnblogs.com/void0/p/4230986.html
Copyright © 2011-2022 走看看