Обратитесь к моему sqlConnection в mySqlCommand - PullRequest
2 голосов
/ 31 января 2012

Моя кнопка подключения работает ..

private void connectBtn_Click(object sender, EventArgs e)
        {
            username = initialTf.Text;
            adress = adressTf.Text;

            connect conn = new connect();
            conn.myConnection(username, adress);
        }

Обращаясь к этому методу

public SqlConnection myConnection(string dbName, string addr)
        {
            connector = new SqlConnection(
            "Data Source=" + addr + ";" + "Initial Catalog=" + dbName +   ";Trusted_Connection=yes;");
            try
            {
                connector.Open();
                MessageBox.Show("Du är ansluten");
            }
            catch (Exception e)
            {
                MessageBox.Show("Fail" + e);
            }
            return connector;

А потом я добавил еще одну кнопку чтенияиз textField, который будет выполнять команду SQL.Проблема в том, что я не знаю, как получить и использовать метод подключения.

Код кнопки

private void askBtn_Click(object sender, EventArgs e)
        {
            sqlQuestion = sqlQuestiontF.Text;
            connect conn = new connect();
            conn.askSQL(sqlQuestion);

        }

И, наконец, код в классе подключения

> class connect
>     {
>         SqlConnection connector;
>         SqlDataReader rdr = null;
> 
>         public void askSQL (string sqlQuestion)
>         {
> 
>             SqlCommand cmd = new SqlCommand();
>             cmd.CommandText = sqlQuestion;
>             cmd.Connection = connector;
>             try
>             {
>                 rdr = cmd.ExecuteReader();
>                 while (rdr.Read())
>                 {
> 
>                 }
> 
>             }
>             catch (Exception e)
>             {
>                 MessageBox.Show("Fel vid anslutningen!" + e);
>             }
>         }

В моем сообщении об ошибке говорится, что соединение не было правильно инициализировано.Извините за грамматические ошибки и мое замешательство.Совершенно новый для программирования:)

Ответы [ 2 ]

1 голос
/ 31 января 2012

Во втором событии нажатия кнопки вы объявляете другой объект подключения. Это не то же самое, что в первой кнопке. Метод askSQL () ожидает, что соединение уже будет инициализировано. Для этого вы должны запустить первый код кнопки во втором событии кнопки.

private void askBtn_Click(object sender, EventArgs e)
{
 sqlQuestion = sqlQuestiontF.Text;
 username = initialTf.Text;
 adress = adressTf.Text;

 connect conn = new connect();
 conn.myConnection(username, adress);

 conn.askSQL(sqlQuestion);
}
0 голосов
/ 31 января 2012

Я думаю, вы пропустили разъем. Откройте () в коде.

    class connect
{
    SqlConnection connector;
    SqlDataReader rdr = null;

    public void askSQL(string sqlQuestion)
    {
        try
        {
            using (connector = new SqlConnection("Your Connection String here"))
            {
                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = sqlQuestion;
                cmd.Connection = connector;

                    rdr = cmd.ExecuteReader();
                    using (rdr)
                    {
                        while (rdr.Read())
                        {

                        }
                    }

            }
        }
        catch (Exception ex)
        {
            if (connector.State == System.Data.ConnectionState.Open)
                connector.Close();
            MessageBox.Show("Fel vid anslutningen!" + e);
        }
    }
}
...