c# - 从 Visual Studio 连接到 sql 数据库时出错

标签 c# mysql sql visual-studio

我是使用 C# 进行 Visual Studio 编程的新手。我想将我的数据从 Visual Studio 连接到 mysql 数据库。我使用 XAMPP 作为服务器,但是当我尝试连接时,它给出错误消息:“连接必须有效且打开”。我不知道如何解决它。我已经尝试了一些方法来解决这个问题,但仍然没有解决。

using System;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

namespace scadaSql
{
    public partial class Form1 : Form
    {
        MySqlConnection connectionMySql;

        bool statusServer = false;
        string server = "localhost";
        string database = "topsus_iot";
        string uid = "root";
        string pass = "";
        string conString;
        int checkCounter = 0;
        int timeCounter = 0;
        int filesCnt = 0;
        int loopProg = 0;

        public void sqlInsert(int temp, int humidity)
        {
            try
            {
                MySqlCommand cmd = connectionMySql.CreateCommand();
                cmd.CommandText = "INSERT INTO data (device_id, temperature, humidity) VALUE(2, @temp, @humidity)";
                cmd.Parameters.AddWithValue("@temp", temp);
                cmd.Parameters.AddWithValue("@humidity", humidity);
                cmd.ExecuteNonQuery();
            }
            catch (Exception X)
            {
                MessageBox.Show(X.Message);
                throw;
            }
        }

        public bool sqlClose()
        {
            try
            {
                connectionMySql.Close();
                label4.Text = "disconnected";
                label4.ForeColor = System.Drawing.Color.Lime;
                return true;
            }
            catch (MySqlException ex)
            {
                MessageBox.Show(ex.Message);
                return false;
            }
        }

        public bool sqlOpen()
        {
            try
            {
                connectionMySql.Open();
                label4.Text = "Connected";
                label4.ForeColor = System.Drawing.Color.Lime;
                return true;
            }
            catch (MySqlException mx)
            {
                switch (mx.Number)
                {
                    case 0:
                        break;
                    case 1045:
                        break;
                }
                return false;
            }
        }
        public Form1()
        {
            InitializeComponent();
            conString = "SERVER=" + server + ";" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + pass + ";";
            connectionMySql = new MySqlConnection(conString);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            statusServer = false;
            sqlOpen();

        }

        private void button1_Click(object sender, EventArgs e)
        {
            sqlInsert((int)temperature.Value, (int)humidity.Value);
        }
    }
}

最佳答案

您需要在创建 sql 命令之前打开连接。 看来您从未调用 SQLOpen 方法,因此连接从未初始化和打开,因此您的插入语句失败。

我建议为您的类创建一个构造函数并对其调用 open 命令。

此外,运行命令后不要忘记调用 sqlClose()。

关于c# - 从 Visual Studio 连接到 sql 数据库时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50702523/

相关文章:

php - 为搜索功能创建 MySql 查询

mysql - 选择所有行 (700000) 很长时间 - 小时

java - 优雅地处理 SQL 空参数

c# - 如何使用 Open XML SDK 将 Word 文档 (docx) 中的书签替换为图像?

c# - 如何取消订阅 C# 中特定类的事件的所有处理程序?

c# - ConcurrentDictionary GetOrAdd 异步

c# - WCF HTTP 发布 : How to bind Json data to C# Model

mysql - 从 ec2 Linux AMI 连接到 RDS MySQL 实例 - 找不到 mysql 命令

mysql - SQL 无法指定目标表

PHP+AJAX 与 MySQL - 每 2 秒查询一次,在 TIME_WAIT 中太多