zoukankan      html  css  js  c++  java
  • c# 访问Mysql

    下载Connector/Net驱动程序,并安装。

    通过MySQLConnection对象来连接数据库,连接MySQL的程序的最前面需要引用MySql.Data.MySqlClient。

        using MySql.Data.MySqlClient

    创建MySqlConnection对象

       MySqlConnection conn=null;

       conn=new MySqlConnection("Data Source/Host=主机名或者ip";Initial Catalog/Database=数据库名;User ID=用户名;Password/PWD=用户密码");

       Data Source/Host:表示MySQL数据库所在的计算机的主机名或者IP

       Initial Catalog/Database:需要连接的数据库

    创建MySQLConnection对象后,需要调用Open()函数来执行连接操作

       conn.Open();

    举个例子:

       MySqlConnection conn=null;

       conn=new MySqlConnection("Data Source/Host=localhost";Initial Catalog/Database=test;User ID=root;Password/PWD=huang");

       conn.Open();//如果conn.Open()执行成功,那么conn的状态就是Open

       if(conn.State.ToString=="Open")

       {

          Console.WriteLine("连接到MySQL数据库,连接成功!");

       }

       else

       {

          Console.WriteLine("连接失败!");

       }

    连接MySQL数据库之后,通过MySQLCommand对象来获取SQL语句,然后通过ExecuteNonQuery()方法对数据库进行插入、更新、和删除操作;通过ExecuteRead()方法查询数据库中的数据,也可以通过ExecuteScalar()方法查询数据;通过MySqlDataReader对象获取SELECT语句的查询结果。除了上述方法操作数据库以外,还可以使用MySqlDataAdapter对象、DataSet对象、DataTable对象来操作数据库

    MySqlCommand对象主要用来管理MySqlConnector对象和SQL语句,MySqlCommand创建方法

        //其中SQL语句可以是INSERT,UPDATE,DELETE,SELECT,conn为MySqlConnector对象

        MySqlCommand com=new MySqlCommand ("SQL语句",conn);

        //也可以通过以下方式创建MySqlCommand,这种方式可以按照需要为MySqlCommand对象添加不同的SQL语句。

        MySqlCommand com=new MySqlCommand ();

        com.Connection=conn;

        com.CommandText="SQL语句";

    插入,更新,删除数据,如果需要对数据库执行插入,更新和删除等操作,那么需要MySqlCommand对象调用ExecuteNonQuery()方法来实现。ExecuteNonQuery()方法返回一个整形的数字。下面是调用ExecuteNonQuery()方法的代码。

        int i=com.ExecuteNonQuery();//com是MySqlCommand对象,com通过ExecuteNonQuery()方法执行com中的INSERT语句,UPDATE语句或者DELETE
                                                   //语句,ExecuteNonQuery()执行完成后返回影响表的行数

    举个例子:

        MysqlCommand com=new MySqlCommand();

        com.Connection=conn;

        //com对象通过CommandText获取INSERT语句

        com.CommandText="INSERT INTO score  VALUES(21,902,'英语',85),(22,903,'英语',90)";

        int i=ExecuteNonQuery();

        if(i>0)

        {

           Console.WriteLine("插入的记录数为:"+i);//返回值是所有SQL语句影响表的行数的总和。

        }

        还可以给com.CommandText传多条SQL语句,多条SQL语句都写在一个""内,并且用;隔开。举例,执行一条UPDATE,再执行一条DELETE  

        MysqlCommand com=new MySqlCommand();

        com.Connection=conn;

        //com对象通过CommandText获取INSERT语句

        com.CommandText="UPDATE score SET grade=95 WHERE id=5;DELETE FROM score WHERE id=6";

        int i=ExecuteNonQuery();

        if(i>0)

        {

           Console.WriteLine("更新和删除的总记录数为:"+i);//返回值是所有SQL语句影响表的行数的总和,结果为2。

        }

    使用SELECT语句查询数据

    ExecuteNonQuery()不能查询数据,如果要执行SELECT语句,则需要MySqlCommand对象调用ExecuteReader()方法来实现,ExecuteReader()方法返回一个MySqlDataReader对象,调用ExecuteReader()方法代码如下:

        MySqlDataReader dr;

        dr=com.ExecuteReader();//ExecuteReader()方法查询出来的记录都存储在dr中,通过dr调用Read()方法读取数据。如果读取到记录,Read()函数返回true。如果没有读
                                            //取到记录,Read()函数返回false。读取到记录后通过dr["columnName"]或者dr[n]来去读相应字段的数据

    下面通过ExecuteReader()方法执行一个SELECT语句,代码如下

        MySqlCommand com=null;

        MySqlReader dr=null;

        com=new MysqlCommand("SELECT * FROM score",conn);

        dr=com.ExecuteReader();

        while(dr.Read())

        {

           Console.WriteLine(dr["id"]+"   "+dr["stu_id"]+"   "+dr["c_name"]+"   "+dr["grade"]);

        }

        注:com调用ExecuteReader()方法来执行SELECT语句,执行结果返回给dr。dr调用Read()函数读取数据,如果Read()返回值为true,执行while循环。在while循环中去读每条记录的值。所有记录去读完毕后或者读取遇到错误,Read()返回false,循环结束。

        一次执行多个SELECT语句

        一次执行多个SELECT语句时,ExecuteReader()方法会将所有的SELECT语句的执行结果都返回给MySqlDataReader对象。但是MySqlDataReader对象一次只能够读取一个SELECT语句的查询结果。如果需要去读下一个SELECT语句的执行结果,MySqlDataReader对象需要调用NextResult()方法。NextResult()方法获取到下一个SELECT语句的查询结果时,该方法返回true。然后MySqlDataReader对象可以通过Read()函数来读取数据,如果NextResult()方法返回值为false,那么说明结果全部都读取出来了。

        实例代码:

        MySqlCommand com=null;

        MySqlReader dr=null;

        //将com实例化,并将两个SELECT语句传递给com

        com=new MysqlCommand("SELECT * FROM score;SELECT * FROM Student",conn);

        dr=com.ExecuteReader();

        while(dr.Read())

        {

           Console.WriteLine(dr["id"]+"   "+dr["stu_id"]+"   "+dr["c_name"]+"   "+dr["grade"]);

        }

        if(dr.NextResult())//dr.NextResult()方法最好和while循环一起使用

        {

           while(dr.Read())

           {

               Console.WriteLine(dr["id"]+"   "+dr["name"]+"   "+dr["address"]+"   "+dr["department"]);

           }

        }

  • 相关阅读:
    100+ Python挑战性编程练习(1)
    python面试题--初级(二)
    python面试题--初级(一)
    centos查看iptables和firewall防火墙状态、开启、关闭防火墙
    Keepalived nginx HA负载均衡
    windows10安装SQLServer 2008 R2详细说明
    CentOS安装mysql5.7
    centOS7.5安装docker
    redis哨兵选举算法--raft
    CentOS7.5安装GitLab及汉化
  • 原文地址:https://www.cnblogs.com/mrxiaohe/p/5193183.html
Copyright © 2011-2022 走看看