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

MySQL Connector/Net 的简单使用「建议收藏」IDE:vs2022Targetframework:.net6.0首先,新建工程(WindowsApplication)然后,在NuGet中获取MySQL连接器(.netcore)Project-》ManageNuGetPackages之后,放置控件3个TextBox,2个ComboBox(cBoxDBs和cBoxTables)等等密码框设置下拉框设置(cBoxDBs:数据库,cBox

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

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

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

选择Target framework: .net 6.0

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

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

Tools-》NuGet Package Manager-》Package Manager Console

PM> Install-Package MySql.Data

        之后,放置控件

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

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

密码框设置

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

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

最后,添加dataGridView。

最后效果:

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

        运行效果:

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

源代码

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

    Form1.cs

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 的简单使用「建议收藏」

   解决办法:

           增加“Convert Zero Datetime=True”

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 的简单使用「建议收藏」

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
上一篇 2022年7月15日 下午9:46
下一篇 2022年7月15日 下午10:00


相关推荐

  • c语言哈希表电子辞典_哈希表的C语言实现

    c语言哈希表电子辞典_哈希表的C语言实现构造一种存储结构 通过某种函数 hashFunc 使元素的存储位置与它的关键码之间能够建立一一映射的关系 那么在查找时通过该函数可以很快找到该元素 说到哈希表 首先就得说到哈希函数 哈希函数是用来得到给定 key 值的在哈希表中的存储位置的 哈希函数也并不是固定的 可以自己根据情况来定 一般常用常见的有直接定制法 除留余数法 平方取中法 折叠法 随机数法 数学分析法 当向该结构插入元素时 存入根据关键

    2026年3月26日
    2
  • FilterChain的详解

    FilterChain的详解FilterChain 的作用过滤器链作用 当一个 filter 收到请求的时候 调用 chain doFilter 才可以访问下一个匹配的 filter 若当前的 filter 是最后一个 filter 调用 chain doFilter 才能访问目标资源多个 filter 的执行顺序是由 web xml 中 filter mapping 的位置决定的 dispatcherRE 默认值 过滤从浏览器发送过来的请求和重定向不过滤转发 FORWARD 只过滤转发过来的请求了解 INCLUDE 只过滤包含过来的请求 ER

    2026年3月17日
    2
  • PyCharm 2021.11.3激活工具【最新永久激活】「建议收藏」

    (PyCharm 2021.11.3激活工具)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~92…

    2022年3月29日
    656
  • 谷歌打开微信定位服务器地址,使用Chrome修改user agent模拟微信内置浏览器

    谷歌打开微信定位服务器地址,使用Chrome修改user agent模拟微信内置浏览器很多时候,我们需要模拟微信内置浏览器,今天教大家用chrome简单模拟。如图设置:F12或者右键审查元素进入开发者模式,点击Emulation,然后点击Network,把Spoofuseragent改成Other,并把下面的带复制进去,有三句,大家自己尝试。回车然后刷新页面即可。Mozilla/5.0(iPhone;CPUiPhoneOS5_1likeMacOSX)Appl…

    2022年6月1日
    60
  • ffmpeg添加视频封面_ffmpeg提取波形文件

    ffmpeg添加视频封面_ffmpeg提取波形文件ffmpeg-ia.mp4-y-fimage2-frames1a.jpgffmpeg-i11.mp4-vframes1xx.jpgffmpeg-ia.mp4-r0.1frames_%04.pngconvert-backgroundwhite-flatten***.pdf***.png

    2025年6月14日
    3
  • BNF 介绍

    BNF 介绍转 来自维基百科 BNF 规定是推导规则 产生式 的集合 写为 这里的符号是非终结符 而表达式由一个符号序列 或用指示选择的竖杠 分隔的多个符号序列构成 每个符号序列整体都是左端的符号的一种可能的替代 从未在左端出现的符号叫做终结符 基本原理 nbsp nbsp nbsp nbsp nbsp BNF 类似一种数学游戏 从一个符号开始 叫做起始标志 实例中常用 S 表示 然后给出替换

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号