mysql connector 如何使用_MySQL Connector/Net 的简单使用

本文介绍了如何在Windows Application工程中使用MySQL Connector/Net。首先,添加MySql.Data引用,接着配置连接字符串并建立数据库连接,展示如何获取数据库和表的列表,并填充到下拉框。当选择数据库和表时,将数据填充到DataGridView展示。遇到'0000-00-00'日期问题,解决方案是在连接字符串中加入'Convert Zero DatETIME=True'。
摘要由CSDN通过智能技术生成

首先,新建工程(Windows Application)

0818b9ca8b590ca3270a3433284dd417.png

然后,增加引用(MySql.Data)

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

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

之后,放置控件

3个TextBox,2个ComboBox, 1个DataGridView等等

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

密码框设置

0818b9ca8b590ca3270a3433284dd417.png

下拉框设置

0818b9ca8b590ca3270a3433284dd417.png

数据格设置

连接按钮代码:

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;

运行效果:

0818b9ca8b590ca3270a3433284dd417.png

操作步骤(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)数据

0818b9ca8b590ca3270a3433284dd417.png

解决办法:

在连接串格式中增加“Convert Zero Datetime=True”

server={0}; user id={1}; password={2}; database=mysql; pooling=false; Convert Zero Datetime=True

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值