“表已经存在”,但事实并非如此

时间:2012-11-03 21:28:28

标签: c# mysql

我从Visual Studio 2012收到This Table already exists错误。我在MySqlWorkbenchXampp目录中检查了它,但我没有找到任何内容。我甚至用DROP TABLE IF EXISTS tablename;尝试了它,但这也不起作用。

public class DBConnect
{
    private MySqlConnection connection;
    private string server;
    private string database;
    private string uid;
    private string password;

        //Constructor
    public DBConnect()
    {
        Initialize();
    }

    //Initialize values
    private void Initialize()
    {
        server = "localhost";
        database = "";
        uid = "root";
        password = "";
        string connectionString;
        connectionString = "SERVER=" + server + ";" + "DATABASE=" +
        database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";

        connection = new MySqlConnection(connectionString);
        connection.Dispose();

        CreateDatabase(" DROP DATABASE IF EXISTS boerswatch; CREATE DATABASE boerswatch;");

        server = "localhost";
        database = "boerswatch";
        uid = "root";
        password = "";
        string connectionString1;
        connectionString1 = "SERVER=" + server + ";" + "DATABASE=" +
        database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";

        connection = new MySqlConnection(connectionString1);
    }


    //open connection to database
    private bool OpenConnection()
    {
        try
        {
            connection.Open();
            return true;
        }
        catch (MySqlException e)
        {
            switch (e.Number)
           {
                case 0:
                    MessageBox.Show("Keine Verbindung zum Server Möglich!");
                    break;
                case 1045:
                    MessageBox.Show("Ungültiger Benutzername oder Passwort!");
                    break;
            }
                return false;
        }
   }


        //Close connection
    private bool CloseConnection()
    {
        try
        {
            connection.Close();
            return true;
        }
        catch (MySqlException e)
        {
            MessageBox.Show(e.Message);
            return false;
         }
    }
   public void CreateDatabase(String query)
   {
        if (OpenConnection())
       {
            try
            {

                MySqlCommand cmd = new MySqlCommand(query, connection);
                cmd.ExecuteNonQuery();
                CloseConnection();
            }
            catch (MySqlException e)
            {
                MessageBox.Show(e.Message);
            }

        }
    }

    public void CreateTable(String query)
    {
        if (OpenConnection())
        {
            try
            {
                MySqlCommand cmd = new MySqlCommand(query, connection);
                cmd.ExecuteNonQuery();
                CloseConnection();
            }
            catch (MySqlException e)
            {
                MessageBox.Show(e.Message);
            }
        }
    }

    public void Insert(String query)
    {
        if (this.OpenConnection())
        {
            MySqlCommand cmd = new MySqlCommand(query, connection);
            cmd.ExecuteNonQuery();
            this.CloseConnection();
        }
    }
}

public partial class Form1 : Form
{    
    static XmlSerializer serializer;
    static FileStream stream;
    public List<Bank> banks;
    public List<Object> pers;
    public DBConnect data;
    public Form1()
    {
        InitializeComponent();
        checkFiles();
    }
    private void checkFiles()
    {
        String user = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
        banks = new List<Bank>(5);
        if (!Directory.Exists(@"C:\xampp\mysql\data\boerswatch") )
        {
            data = new DBConnect();
            createBanks();
        }
        else
        {
            //loadBanks();
            //loadAccounts(pers);
        }
    }
    public void createBanks()
    {
        Bank b1 = new Bank("Raiffeisen");
        Bank b2 = new Bank("Erste Bank");
        Bank b3 = new Bank("BAWAG");
        banks.Add(b1);
        banks.Add(b2);
        banks.Add(b3);
        data.CreateTable("DROP TABLE IF EXISTS Banken; CREATE TABLE Banken( name VARCHAR(20) PRIMARY KEY);");
        data.Insert("INSERT INTO Banken VALUES(" + b1.Name + ");");
        data.Insert("INSERT INTO Banken VALUES(" + b2.Name + ");");
        data.Insert("INSERT INTO Banken VALUES(" + b3.Name + ");");
        listBox1.DataSource = banks;
    } 
}

0 个答案:

没有答案