数据库连接不起作用 C#
Database connection doesn't work C#
我正在用 C# 开发一个程序。我在 phpMyAdmin 上用 MySQL 创建了一个数据库,我想将这个数据库与我的程序连接起来。
连接后我必须插入、更新、删除和查看所有数据,但我遇到了一个问题:连接不起作用。
我post这里是我的连接代码:
public static string StringaConnessione = "Data Source=localhost;Database=agility;userid=root;password='';";
public static MySqlConnection Connessione = new MySqlConnection(StringaConnessione);
当我为插入按钮编写代码时,我遇到了另一个问题(肯定是数据库问题)
Connessione.Open();
SQLDataAdapter SDA=new SqlDataAdapter("INSERT INTO GARA(nome_gara,giudice,località,data,tpsopm,tpmopm,tpstot,tpmtot)VALUES('"+textBox1.Text+"','"+textBox2.Text+"','"+textBox3.Text+"','"+textBox4.Text+"','"+textBox5.Text+"','"+textBox6.Text+"','"+textBox7.Text+"','"+textBox8.Text+"')",Connessione);
SDA.SelectCommand.ExecuteNonQuery();
Connessione.Close();
MessageBox.Show("Dati salvati correttamente!");
你能帮帮我吗?谢谢!
您不能使用 SqlDataAdapter
与 MySQL
交谈,因为 class 是为与 Sql 服务器一起使用而设计的。
你的代码问题太多了:
1)你用的是静态连接,有连接池,是你的朋友
2) 您没有在 using block 或 try/catch/finally/block 中使用您的连接
以确保在异常时关闭连接。
3) 拦截器问题:您正在使用 SqlDataAdapter 而不是 MySqlDataAdapter
4) 阻塞问题 您应该在 DataAdapter
的 InsertCommand
中定义您的插入查询,它不适用于 SelectCommand
。更好的方法是使用 MySqlCommand
和 ExecuteNonQuery
。
5) 您不受 Sql 注入保护(使用 MySqlCommand.Parameters)
6) 变量、文本框和数据库字段的格式错误。
您的代码的最佳外观:
public static string connetionString= "Data Source=localhost;Database=agility;userid=root;password='';";
public void SomeMethod()
{
using(MySqlConnection conn = new MySqlConnection(connetionString));
{
conn.Open();
string query = @"INSERT INTO GARA
(nome_gara, giudice, località, data, tpsopm, tpmopm, tpstot, tpmtot)
VALUES
(@Param1, @Param2, @Param3, @Param4, @Param5, @Param6, @Param7, @Param8)";
MySqlCommand cmd = new MySqlCommand(@"query", conn);
cmd.Parameters.AddWithValue("@Param1", textBox1.Text);
cmd.Parameters.AddWithValue("@Param2", textBox2.Text);
cmd.Parameters.AddWithValue("@Param3", textBox3.Text);
cmd.Parameters.AddWithValue("@Param4", textBox4.Text);
cmd.Parameters.AddWithValue("@Param5", textBox5.Text);
cmd.Parameters.AddWithValue("@Param6", textBox6.Text);
cmd.Parameters.AddWithValue("@Param7", textBox7.Text);
cmd.Parameters.AddWithValue("@Param8", textBox8.Text);
cmd.ExecuteNonQuery();
}
}
我认为您应该丢弃所有代码。
并找到一个有效的开始
比如这个
http://roboardgod.blogspot.hk/2013/08/cmysql.html
您可能需要手动添加参考 MySql.Data.MySqlClient。检查此 post 以添加参考
How do I add a reference to the MySQL connector for .NET?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
namespace MySQLtest
{
class Program
{
static void Main(string[] args)
{ string dbHost = "";//db address, for example localhost
string dbUser = "";//dbusername
string dbPass = "";//dbpassword
string dbName = "";//db name
string connStr = "server=" + dbHost + ";uid=" + dbUser + ";pwd=" + dbPass + ";database=" + dbName;
MySqlConnection conn = new MySqlConnection(connStr);
MySqlCommand command = conn.CreateCommand();
conn.Open();
String cmdText = "SELECT * FROM member WHERE level < 50";
MySqlCommand cmd = new MySqlCommand(cmdText, conn);
MySqlDataReader reader = cmd.ExecuteReader(); //execure the reader
while (reader.Read())
{
for (int i = 0; i < 4; i++)
{
String s = reader.GetString(i);
Console.Write(s + "\t");
}
Console.Write("\n");
}
Console.ReadLine();
conn.Close();
}
}
}
我正在用 C# 开发一个程序。我在 phpMyAdmin 上用 MySQL 创建了一个数据库,我想将这个数据库与我的程序连接起来。 连接后我必须插入、更新、删除和查看所有数据,但我遇到了一个问题:连接不起作用。
我post这里是我的连接代码:
public static string StringaConnessione = "Data Source=localhost;Database=agility;userid=root;password='';";
public static MySqlConnection Connessione = new MySqlConnection(StringaConnessione);
当我为插入按钮编写代码时,我遇到了另一个问题(肯定是数据库问题)
Connessione.Open();
SQLDataAdapter SDA=new SqlDataAdapter("INSERT INTO GARA(nome_gara,giudice,località,data,tpsopm,tpmopm,tpstot,tpmtot)VALUES('"+textBox1.Text+"','"+textBox2.Text+"','"+textBox3.Text+"','"+textBox4.Text+"','"+textBox5.Text+"','"+textBox6.Text+"','"+textBox7.Text+"','"+textBox8.Text+"')",Connessione);
SDA.SelectCommand.ExecuteNonQuery();
Connessione.Close();
MessageBox.Show("Dati salvati correttamente!");
你能帮帮我吗?谢谢!
您不能使用 SqlDataAdapter
与 MySQL
交谈,因为 class 是为与 Sql 服务器一起使用而设计的。
你的代码问题太多了:
1)你用的是静态连接,有连接池,是你的朋友
2) 您没有在 using block 或 try/catch/finally/block 中使用您的连接 以确保在异常时关闭连接。
3) 拦截器问题:您正在使用 SqlDataAdapter 而不是 MySqlDataAdapter
4) 阻塞问题 您应该在 DataAdapter
的 InsertCommand
中定义您的插入查询,它不适用于 SelectCommand
。更好的方法是使用 MySqlCommand
和 ExecuteNonQuery
。
5) 您不受 Sql 注入保护(使用 MySqlCommand.Parameters)
6) 变量、文本框和数据库字段的格式错误。
您的代码的最佳外观:
public static string connetionString= "Data Source=localhost;Database=agility;userid=root;password='';";
public void SomeMethod()
{
using(MySqlConnection conn = new MySqlConnection(connetionString));
{
conn.Open();
string query = @"INSERT INTO GARA
(nome_gara, giudice, località, data, tpsopm, tpmopm, tpstot, tpmtot)
VALUES
(@Param1, @Param2, @Param3, @Param4, @Param5, @Param6, @Param7, @Param8)";
MySqlCommand cmd = new MySqlCommand(@"query", conn);
cmd.Parameters.AddWithValue("@Param1", textBox1.Text);
cmd.Parameters.AddWithValue("@Param2", textBox2.Text);
cmd.Parameters.AddWithValue("@Param3", textBox3.Text);
cmd.Parameters.AddWithValue("@Param4", textBox4.Text);
cmd.Parameters.AddWithValue("@Param5", textBox5.Text);
cmd.Parameters.AddWithValue("@Param6", textBox6.Text);
cmd.Parameters.AddWithValue("@Param7", textBox7.Text);
cmd.Parameters.AddWithValue("@Param8", textBox8.Text);
cmd.ExecuteNonQuery();
}
}
我认为您应该丢弃所有代码。 并找到一个有效的开始
比如这个 http://roboardgod.blogspot.hk/2013/08/cmysql.html
您可能需要手动添加参考 MySql.Data.MySqlClient。检查此 post 以添加参考 How do I add a reference to the MySQL connector for .NET?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
namespace MySQLtest
{
class Program
{
static void Main(string[] args)
{ string dbHost = "";//db address, for example localhost
string dbUser = "";//dbusername
string dbPass = "";//dbpassword
string dbName = "";//db name
string connStr = "server=" + dbHost + ";uid=" + dbUser + ";pwd=" + dbPass + ";database=" + dbName;
MySqlConnection conn = new MySqlConnection(connStr);
MySqlCommand command = conn.CreateCommand();
conn.Open();
String cmdText = "SELECT * FROM member WHERE level < 50";
MySqlCommand cmd = new MySqlCommand(cmdText, conn);
MySqlDataReader reader = cmd.ExecuteReader(); //execure the reader
while (reader.Read())
{
for (int i = 0; i < 4; i++)
{
String s = reader.GetString(i);
Console.Write(s + "\t");
}
Console.Write("\n");
}
Console.ReadLine();
conn.Close();
}
}
}