当前位置:首页 > 数据库 > Mysql

MySQLConnector/Net的简略使用

mysql connector/net 的简单使用

首先,新建工程(windows application)

 

然后,增加引用(mysql.data)

 

 

注意:根据使用.net版本的不同而选择mysql.data版本

 

之后,放置控件

3个textbox,2个combobox, 1个datagridview等等

 

密码框设置

 

 

下拉框设置

 

数据格设置

连接按钮代码:

            string connstr = string.format("server={0};user id={1}; password={2}; database=mysql; pooling=false",
                edtsrv.text, edtuser.text, edtpwd.text);
            try
            {
                conn = new mysqlconnection(connstr);
                conn.open();

                // 获得数据库列表
                list cmd = new list();
                cmd.add("show databases");
                list list = getdatalist(cmd);

                // 清空下拉框
                cboxdbs.items.clear();
                // 增加下拉框列表
                foreach (string str in list)
                    cboxdbs.items.add(str);
                
            }
            catch(mysqlexception ex)
            {
                messagebox.show("没有找到数据库: " + ex.message);
            }

下拉框(数据库列表)

            // 获得数据库列表
            list cmdlist = new list();
            cmdlist.add("use " + cboxdbs.selecteditem.tostring());
            cmdlist.add("show tables");
            list list = getdatalist(cmdlist);

            // 清空下拉框
            cboxtables.items.clear();
            // 增加下拉框列表
            foreach (string str in list)
                cboxtables.items.add(str);

下拉框(数据表列表)

            // 获得数据表名称
            string tablename = cboxtables.selecteditem.tostring();
            // 设置数据桥
            dataadapter = new mysqldataadapter("select * from " + tablename, conn);

            // dataset
            sqlcmdbuilder = new mysqlcommandbuilder(dataadapter);
            // 建立数据表
            table = new datatable(tablename);
            // 填充数据表到数据桥
            dataadapter.fill(table);

            // 指定数据源
            datagridview1.datasource = table;

运行效果:

操作步骤(1、2、3)

 

开发环境: vs2005

连接器(for .net):v6.8.3

 

form1.cs

using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.text;
using system.windows.forms;
using mysql.data.mysqlclient;

namespace testmysql
{
    public partial class frmain : form
    {
        private mysqlconnection conn;
        private datatable table;
        private mysqldataadapter dataadapter;
        private mysqlcommandbuilder sqlcmdbuilder;

        public frmain()
        {
            initializecomponent();
        }

        private void btnconn_click(object sender, eventargs e)
        {
            //
            string connstr = string.format(
                "server={0}; user id={1}; password={2}; database=mysql; pooling=false",
                edtsrv.text, edtuser.text, edtpwd.text);
            try
            {
                conn = new mysqlconnection(connstr);
                conn.open();

                // 获得数据库列表
                list cmd = new list();
                cmd.add("show databases");
                list list = getdatalist(cmd);

                // 清空下拉框
                cboxdbs.items.clear();
                // 增加下拉框列表
                foreach (string str in list)
                    cboxdbs.items.add(str);
                
            }
            catch(mysqlexception ex)
            {
                messagebox.show("没有找到数据库: " + ex.message);
            }
        
        }

        private list getdatalist(list cmdlist)
        {
            list result = new list();

            // sql数据读取器
            mysqldatareader datareader = null;

            // sql命令执行器
            mysqlcommand sqlcmd = new mysqlcommand();

            // 设置sql命令执行器的连接
            sqlcmd.connection = conn;

            try
            {
                // 执行的sql命令
                foreach (string cmd in cmdlist)
                {
                    sqlcmd.commandtext = cmd;
                    sqlcmd.executenonquery();
                }
                //   
                datareader = sqlcmd.executereader();

                while(datareader.read())
                {
                    string strdbname = datareader.getstring(0);

                    result.add(strdbname);
                }
            }
            catch (mysqlexception ex)
            {
                messagebox.show("读取数据失败: " + ex.message);
            }
            finally
            {
                if (datareader != null) 
                    datareader.close();
            }
            return result;
        }

        private void cboxdbs_selectedindexchanged(object sender, eventargs e)
        {
            // 获得数据库列表
            list cmdlist = new list();
            cmdlist.add("use " + cboxdbs.selecteditem.tostring());
            cmdlist.add("show tables");
            list list = getdatalist(cmdlist);

            // 清空数据库列表
            cboxtables.items.clear();
            // 增加下拉框列表
            foreach (string str in list)
                cboxtables.items.add(str);
        }

        private void cboxtables_selectedindexchanged(object sender, eventargs e)
        {
            // 获得数据表名称
            string tablename = cboxtables.selecteditem.tostring();
            // 设置数据桥
            dataadapter = new mysqldataadapter("select * from " + tablename, conn);

            // dataset
            sqlcmdbuilder = new mysqlcommandbuilder(dataadapter);
            // 建立数据表
            table = new datatable(tablename);
            // 填充数据表到数据桥
            dataadapter.fill(table);

            // 指定数据源
            datagridview1.datasource = table;
        }
    }
}

 


faq:

1. unable to convert mysql date/time value to system.datetime

出现原因:

datetime列含有“0000-00-00”(yyyy-mm-dd)或者“0000-00-00 00:00:00”(yyyy-mm-dd hh:mm:ss)数据

解决办法:

在连接串格式中增加“convert zero datetime=true”

server={0}; user id={1}; password={2}; database=mysql; pooling=false; convert zero datetime=true

【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!