2016-11-22 16 views
1

私はC#でプログラムを作成しています。 phpMyAdminでMySQLを使用してデータベースを作成しましたが、このデータベースを自分のプログラムに接続したいのです。 接続後、すべてのデータを挿入、更新、削除、表示する必要がありますが、問題があります。接続は機能しません。データベース接続が動作しない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)あなたは、静的な接続を使用しているが、接続プールがあり、それはあなたの友達です。

2)ブロックを使用していないか、またはtry/catch/finally/block で接続を使用しているため、例外時に接続が切断されることはありません。

3)ブロッカーの問題:あなたはDataAdapterInsertCommandであなたのINSERTクエリを定義する必要がありますをMySqlDataAdapter

4)ブロッカー問題の代わりにSqlDataAdapterオブジェクトを使用しているが、それはSelectCommandでは動作しません。さらに良いのは、MySqlCommandExecuteNonQueryだけです。

5)あなたは、SQLインジェクション(使用MySqlCommand.Parameters)

6)あなたの変数、テキストボックスとDBフィールドのバート・フォーマットから保護されていません。

どのようにあなたのコードが最適になります

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

は、私はあなたがすべてのあなたのコードを捨てるべきだと思います。 と手動参照MySql.Data.MySqlClientを追加する必要があり、たとえば

を開始するには、有効な1本 http://roboardgod.blogspot.hk/2013/08/cmysql.html

を見つけます。この記事を参照して参照を追加する 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(); 
     } 
    } 
} 
関連する問題