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

 

 

转载于:https://www.cnblogs.com/void0/p/4230986.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值