gpt4 book ai didi

c# - MySQL 与 Visual C# Express 2008 的连接

转载 作者:行者123 更新时间:2023-11-29 06:10:47 25 4
gpt4 key购买 nike

好吧,基本上我已经在 PhpMyAdmin 上制作了 MySQL 表。它位于本地主机上,用户名 root,没有密码。

我正在 Visual Express 2008 上开发一个基于 C# 的 Windows 应用程序。我有以下代码用于保存/加载来自 MySQL 的数据的按钮(我已经遵循了一些链接/tuts 来达到这一点,但是不知道理论上如何连接到 MySQL @ phpmyadmin,我的意思是我不需要从 PhpmyAdmin 数据库下载一个文件并引用或将其作为插件添加到脚本或其他东西中吗?在这里完全丢失了..):

        String connString = "SERVER = localhost; DATABASE = request; User ID = root; ID =; UserName =; Date =; Type =; Rules =;"; 
MySqlConnection mcon = new MySqlConnection(connString);
String command = "SELECT * FROM requesttcw";
MySqlCommand cmd = new MySqlCommand(command, mcon);
MySqlDataReader reader;

try
{
mcon.Open();
cmd.ExecuteNonQuery();
reader = cmd.ExecuteReader();
cmd.CommandType = System.Data.CommandType.Text;
while (reader.Read() != false)
{
Console.WriteLine(reader["ID"]);
Console.WriteLine(reader["ClanName"]);
Console.WriteLine(reader["Date"]);
Console.WriteLine(reader["Type"]);
Console.WriteLine(reader["Rules"]);

}

Console.ReadLine();

}
catch (Exception)
{
MessageBox.Show("ERROR: There was an error trying to connect to the DB!");
return;
}
cmd.CommandText = "INSERT INTO requesttcw (ClanName, Date, Type, Rules) VALUES ('" + textBox1.Text + "', '" + textBox2.Text + "', '" + textBox3.Text + "', '" + richTextBox1.Text + "' LIMIT 1)";

try
{
cmd.ExecuteNonQuery();
MessageBox.Show("You're Request Has Been Posted!");
}
catch (Exception ex)
{
string message = ("ERROR: There was an error submitting your form!" + ex + "");
DialogResult result = MessageBox.Show(message, "ERROR", MessageBoxButtons.RetryCancel, MessageBoxIcon.Question);

switch (result)
{
case DialogResult.Retry:
Application.Restart();
break;
case DialogResult.Cancel:
this.Close();
break;
}
}

当我运行它时,输入我的数据,然后单击按钮,它在线上给我这个错误(MySqlConnection mcon = new MySqlConnection(connString);*不支持关键字。参数名称:id*

请告诉我如何将其完全连接到MySQL。我还下载了MySQL Connector并引用了mysql.data.dll文件。所以这部分也完成了...

最佳答案

尝试以下连接字符串:

string connString = "Server=localhost;Database=request;Uid=root;Pwd=;";

此外,请尝试清理代码,并确保通过将 SQL 连接和命令等 IDispoable 资源包装在 using 语句中来正确处置它们。还要确保您使用的是准备好的语句,否则您的代码容易受到 SQL 注入(inject)攻击,并且您的数据库可能会很快被破坏(眨眼间):

string connString = "Server=localhost;Database=request;Uid=root;Pwd=;";

using (MySqlConnection mcon = new MySqlConnection(connString))
using (MySqlCommand cmd = mcon.CreateCommand())
{
mcon.Open();
cmd.CommandText = "SELECT * FROM requesttcw";
using (MySqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine(reader["ID"]);
Console.WriteLine(reader["ClanName"]);
Console.WriteLine(reader["Date"]);
Console.WriteLine(reader["Type"]);
Console.WriteLine(reader["Rules"]);
}
}
}

using (MySqlConnection mcon = new MySqlConnection(connString))
using (MySqlCommand cmd = mcon.CreateCommand())
{
mcon.Open();
cmd.CommandText = "INSERT INTO requesttcw (ClanName, Date, Type, Rules) VALUES (@ClanName, @Date, @Type, @Rules)";
cmd.Parameters.AddWithValue("@ClanName", textBox1.Text);

// Warning if the Date column in your database is of type DateTime
// you need to parse the value first, like this:
// cmd.Parameters.AddWithValue("@Date", Date.Parse(textBox2.Text));
cmd.Parameters.AddWithValue("@Date", textBox2.Text);
cmd.Parameters.AddWithValue("@Type", textBox3.Text);
cmd.Parameters.AddWithValue("@Rules", richTextBox1.Text);

cmd.ExecuteNonQuery();
}

就异常处理而言,我在示例中省略了它,但您显然可以将 using 语句包装在 try/catch block 中。

关于c# - MySQL 与 Visual C# Express 2008 的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9252461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com