将c# Windows窗体应用程序连接到基于Linux的服务器上的MySQL数据库
本文关键字:Linux 服务器 数据库 MySQL Windows 窗体 应用程序 连接 | 更新日期: 2023-09-27 18:06:54
我正在研究一个c#应用程序,该应用程序将使用位于我的网站上的远程MySQL数据库,托管在Linux服务器上。MySQL支持。
我试图使用 MySQL . data直接连接MySQL数据库。MySQLClient引用,结果,我的程序抛出以下异常:
"无法连接到任何指定的MySQL主机。"
我搜索了很多教程,但没有找到解决方案…出现相同的错误
谁能告诉我该怎么做?
请提供任何在线链接或教程或您自己的想法。
请帮帮我。
这是我的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace mysq
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
string conn = "Server = myserver;database = db ;uid = username ;password = pwd ;";
MySqlConnection con = new MySqlConnection(conn);
con.Open();
if (con.State == ConnectionState.Open)
{
MySqlCommand cmd = new MySqlCommand("Select * from table", con);
DataTable dt = new DataTable();
MySqlDataAdapter ad = new MySqlDataAdapter(cmd);
ad.Fill(dt);
dataGridView1.DataSource = dt;
}
}
catch (Exception)
{
throw;
}
}
}
}
Thanks in advance.
我已经为我的mysql连接写了一个带有函数的类。
首先声明服务器连接:
string ServerConnection = "Server=localhost;Port=1234;Database=YourDb;Uid=user;password=pass;"
这是我如何选择数据:
public static void DB_Select(string s, params List<string>[] lists)
{
try
{
using(var conn = new MySqlConnection(ServerConnection))
{
conn.Open();
MySqlCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.Text;
string command = s;
cmd.CommandText = command;
using(var sqlreader = cmd.ExecuteReader())
while (sqlreader.Read())
{
if (sqlreader[0].ToString().Length > 0)
{
for (int i = 0; i < lists.Count(); i++)
{
lists[i].Add(sqlreader[i].ToString());
}
}
else
{
foreach (List<string> save in lists)
{
save.Add("/");
}
}
}
}
}
catch (Exception ex)
{
MessageBox.Show("Error while selecting data from database!'nDetails: " + ex);
}
}
调用
List<string> allRows = new List<string>();
DB_Select("SELECT field1 FROM table1 WHERE 1", allRows);
注意:对于您选择的每个字段,您必须传递一个自己的列表,该列表将被输出填充。
对于更新数据库,它将是完全相同的功能。你不需要对输出进行分级。可以像这样:
public static void DB_Update(string s)
{
try
{
using (var conn = new MySqlConnection(ServerConnection))
{
conn.Open();
MySqlCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.Text;
string command = s;
cmd.CommandText = command;
int numRowsUpdated = cmd.ExecuteNonQuery();
if(numRowsUpdated < 0)
{
MessageBox.Show("Warning DB-Contact: Affected_rows < 0!");
}
}
}
catch (Exception ex)
{
MessageBox.Show(String.Format("Updating database failed!'n'nSQL: {0}'n'nERROR: {1}",s,ex.Message));
}
}
您必须在程序中提供适当的连接字符串,我怀疑您正在传递您托管数据库的服务器的正确IP地址或主机名。作为第一步,尝试ping数据库服务器,以确保从您的机器可以访问它。如果可达,尝试如下操作:
MySql.Data.MySqlClient.MySqlConnection conn;
string myConnectionString;
string conn = "Server =<provide proper ip address >;database = db ;uid = username ;password = pwd ;";
conn = new MySql.Data.MySqlClient.MySqlConnection();
conn.ConnectionString = myConnectionString;
conn.Open();
更多细节在这里:http://dev.mysql.com/doc/connector-net/en/connector-net-programming-connecting-open.html