MySQL соединение с Visual C # Express 2008 - PullRequest
0 голосов
/ 13 февраля 2012

Хорошо. Итак, я сделал таблицу MySQL на PhpMyAdmin. Это на локальном хосте, имя пользователя root и без пароля.

Я работаю над приложением Windows, основанным на c #, на Visual Express 2008. У меня есть следующий код для кнопки для сохранения / загрузки данных из MySQL (я перешел по некоторым ссылкам / ссылкам, чтобы добраться до этой точки, но Не знаю, как это может теоретически подключиться к 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. Так что эта часть тоже сделана ...

Ответы [ 3 ]

3 голосов
/ 13 февраля 2012

Попробуйте следующую строку подключения:

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

Также попробуйте очистить свой код и убедитесь, что вы правильно распределяете ресурсы IDispoable, такие как SQL-соединения и команды, заключая их в операторы using. Также убедитесь, что вы используете подготовленные операторы, или ваш код уязвим для атак SQL-инъекций, и ваша база данных может быть разрушена очень быстро (в мгновение ока):

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.

0 голосов
/ 13 февраля 2012

Ваша строка подключения указывает соединение между вашим приложением и сервером MySQL.Вы получаете ошибку, потому что вы допустили ошибку в вашей строке подключения.Я думаю, что следующее подойдет вашим потребностям лучше:

Server=localhost;Database=request;Uid=myUsername;Pwd=myPassword;
0 голосов
/ 13 февраля 2012

В вашей переменной connString у вас есть ID =; после User ID = root.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...