前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL Connector/Net 的简单使用「建议收藏」

MySQL Connector/Net 的简单使用「建议收藏」

作者头像
全栈程序员站长
发布2022-09-13 10:41:07
1.7K0
发布2022-09-13 10:41:07
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

首先,新建工程(Windows Forms App)

MySQL Connector/Net 的简单使用「建议收藏」
MySQL Connector/Net 的简单使用「建议收藏」

选择Target framework: .net 6.0

MySQL Connector/Net 的简单使用「建议收藏」
MySQL Connector/Net 的简单使用「建议收藏」

然后,在NuGet中获取MySQL连接器(.net core)

Tools-》NuGet Package Manager-》Package Manager Console

代码语言:javascript
复制
PM> Install-Package MySql.Data

之后,放置控件

3个TextBox,2个ComboBox(cBoxDBs和cBoxTables)等等

MySQL Connector/Net 的简单使用「建议收藏」
MySQL Connector/Net 的简单使用「建议收藏」

密码框设置

MySQL Connector/Net 的简单使用「建议收藏」
MySQL Connector/Net 的简单使用「建议收藏」

下拉框设置(cBoxDBs:数据库,cBoxTables:数据表)

最后,添加dataGridView。

最后效果:

MySQL Connector/Net 的简单使用「建议收藏」
MySQL Connector/Net 的简单使用「建议收藏」

运行效果:

MySQL Connector/Net 的简单使用「建议收藏」
MySQL Connector/Net 的简单使用「建议收藏」

源代码

链接: https://pan.baidu.com/s/16_9ax3817Y9bqt6FLu_GWA?pwd=sam2

Form1.cs

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

namespace testMySQL
{
    public partial class Form1 : Form
    {
        private MySqlConnection conn;
        private DataTable table;
        private MySqlDataAdapter dataAdapter;
        private MySqlCommandBuilder sqlCmdBuilder;

        public Form1()
        {
            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<string> cmd = new List<string>();
                cmd.Add("SHOW DATABASES");
                List<string> list = getDataList(cmd);

                // 清空下拉框
                cBoxDBs.Items.Clear();
                // 增加下拉框列表
                foreach (string str in list)
                    cBoxDBs.Items.Add(str);

            }
            catch (MySqlException ex)
            {
                MessageBox.Show("没有找到数据库: " + ex.Message);
            }
        }

        private List<string> getDataList(List<string> cmdList)
        {
            List<string> result = new List<string>();

            // 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<string> cmdList = new List<string>();
            cmdList.Add("USE " + cBoxDBs.SelectedItem.ToString());
            cmdList.Add("SHOW TABLES");
            List<string> 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)数据

MySQL Connector/Net 的简单使用「建议收藏」
MySQL Connector/Net 的简单使用「建议收藏」

解决办法:

增加“Convert Zero Datetime=True”

代码语言:javascript
复制
server={0}; user id={1}; password={2}; database=mysql; pooling=false; Convert Zero Datetime=True

2. 版本迁移

复制Form1.cs和Form1.Designer.cs两个文件即可。

3. Interop type cannot be embedded

MySQL Connector/Net 的简单使用「建议收藏」
MySQL Connector/Net 的简单使用「建议收藏」

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159517.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 源代码
  • FAQ:
    • 1. Unable to convert MySQL date/time value to System.DateTime
      • 2. 版本迁移
        • 3. Interop type cannot be embedded
        相关产品与服务
        数据库
        云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档