2016-11-22 7 views
1

Я работаю над программой на C#. Я создал базу данных с MySQL на phpMyAdmin, и я хочу связать эту базу данных с моей программой. После подключения я должен вставлять, обновлять, удалять и просматривать все данные, но у меня есть проблема: соединение не работает.Соединение с базой данных не работает C#

я выкладываю здесь мой код для подключения:

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!"); 

Может вам помочь Я пожалуйста? Спасибо!

ответ

4

Вы не можете использовать SqlDataAdapter, чтобы поговорить с MySQL, поскольку этот класс предназначен для использования с Sql Server.

Вместо этого используйте MySqlDataAdapter.

1

У вас так много проблем с кодом:

1) Вы используете статическое соединение, есть бассейн Connection и является вашим другом.

2) Вы не используете свое соединение в использовании блока или в try/catch/finally/block , чтобы обеспечить закрытие соединения при исключении.

3) Blocker проблема: Вы используете SqlDataAdapter вместо MySqlDataAdapter

4) Blocker проблема Вы должны определить свой Вставить запрос в InsertCommand из DataAdapter, он не будет работать с 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(); 
    } 

} 
0

я думаю, вы должны отбросить весь код. и найти действительный один, чтобы начать

, например, это http://roboardgod.blogspot.hk/2013/08/cmysql.html

вам может понадобиться добавить ссылку MySql.Data.MySqlClient вручную. проверьте это сообщение, чтобы добавить ссылку 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(); 
     } 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^