Я новичок в программировании Visual Studio с помощью C#. Я хочу подключить свои данные из 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);
}
}
}
У вас возникает исключение при открытии соединения в методе sqlOpen ()? Или это настройка label4.Text на connected? Также попробуйте начинать имена методов с верхнего регистра.





Перед созданием команды sql необходимо открыть соединение. Кажется, вы никогда не вызываете свой метод SQLOpen, поэтому соединение никогда не инициализируется и не открывается, и поэтому ваш оператор вставки не работает.
Я рекомендую создать конструктор для вашего класса и вызвать на нем команду open.
Также не забудьте вызвать sqlClose () после того, как вы закончите выполнение команды.
Самый простой способ справиться с закрытием - это реализовать IDisposable и вызвать код внутри блока using.
Небольшой объезд .... blogs.msmvps.com/jcoehoorn/blog/2014/05/12/…