none
Связка С# и MySQL RRS feed

  • Вопрос

  • Решил использовать данную связку...
    using MySql.Data; - библиотечку скачал с MySql.com
    string MyConnectionString = "data source=localhost; user id=user; password=pass; database=dbus;pooling=false";
    MySqlConnection connection = new MySqlConnection(MyConnectionString );
    try
       {
                connection.Open();
        }
    catch
       {}
    Вот и все...:(
    Ни как не могу понять:
    Как выводить данные из таблицы
    Записывать
    Редактировать
    Удалять...
    Если можно то самый простой примерик... без наворотов и выводом в текстбуксы...
    • Перемещено Siddharth Chavan 1 октября 2010 г. 22:43 MSDN Forums Consolidation (От:Visual C#)
    7 января 2010 г. 7:04

Ответы

  • Ну по сути здесь

    MySqlCommand cmd = myConnection.CreateCommand();
    cmd.Parameters.AddWithValue("@id", MySQLDataGrid_0.Rows[e.RowIndex].Cells[0]);
    cmd.CommandText = "delete * FROM mytable WHERE id=@id";
    cmd.ExecuteNonQuery();
    

    и здесь

    strSQL = "DELETE FROM mytable WHERE id = " + MySQLDataGrid_0.Rows[e.RowIndex].Cells[1].Text.ToString() + ";";
    myDataAdapter = new MySqlDataAdapter(strSQL, myConnection);

    мы делаем одно и тоже.

    С помощью MySqlCommand мы выполняем просто команду delete, а в случае с адаптером мы еще и данные получаем

    +некоторые обсуждения:

    OleDbDataAdapter vs OleDbCommand
    OleDbDataAdapter.Update or OleDbCommand.ExecuteNonQuery

    • Предложено в качестве ответа I.Vorontsov 12 января 2010 г. 6:52
    • Помечено в качестве ответа dampirik 13 января 2010 г. 19:39
    11 января 2010 г. 6:30

Все ответы

  • Если подключение выполняется, то все операции так же, как и с другими источниками данных. Привязываете контролы к источнику данных.
    См. MSDN, MS Training Kit. Объект connection лучше вынести за try, используйте using{}.

    8 января 2010 г. 5:02
  • Вот вам пример вызова хранимой процедуры

    String result = null;
                MySqlConnection conn = null;
                MySqlCommand cmd = null;
                MySqlDataReader reader = null;
                try
                {
                    conn = new MySqlConnection(connectionString);
                    cmd = new MySqlCommand(getShortDescription, conn);
                    cmd.Parameters.AddWithValue("?id", id);
                    cmd.CommandType = CommandType.StoredProcedure;
                    conn.Open();
                    reader = cmd.ExecuteReader();
                    if (reader.Read())
                    {
                        result = reader.IsDBNull(0) ? null : reader.GetString(0);
                    }
                }
    Вот пример запроса

    MySqlConnection conn = new MySqlConnection(connectionString);
                MySqlCommand cmd = new MySqlCommand(String.Format(CultureInfo.InvariantCulture,"SELECT {0} (?id)",getUserEconomy),conn);
                cmd.CommandType = CommandType.Text;
                cmd.Parameters.AddWithValue("?id",id);
                object resultDB;
                try
                {
                    conn.Open();
                    resultDB = cmd.ExecuteScalar();
                    conn.Close();
                }
    8 января 2010 г. 7:28
  • //Так мы выводим значения в GridView:
    private static MySqlConnection myConnection; private static MySqlDataAdapter myDataAdapter; private static DataSet myDataSet; private static string strSQL; try { myConnection = new MySqlConnection("server=localhost; user id=root; password=pass; database=mydatabase; pooling=false;"); strSQL = "SELECT * FROM mytable;"; myDataAdapter = new MySqlDataAdapter(strSQL, myConnection); myDataSet = new DataSet(); myDataAdapter.Fill(myDataSet, "mytable"); MySQLDataGrid_0.DataSource = myDataSet; MySQLDataGrid_0.DataBind(); this.infoText.Text = "БД доступна для записи"; } catch { this.infoText.Text = "БД не отвечает"; }
    //Так запишем данные в таблицу:

    try
    {
    strSQL = "insert into mytable(id,name,Email,date_field) values (" + this.idTextBox.Text.ToString() + ",'" + this.nameTextBox.Text.ToString() + "','" + this.emailTextBox.Text.ToString() + "','" + Time1().ToString() + "');";

    myDataAdapter = new MySqlDataAdapter(strSQL, myConnection);
    myDataSet = new DataSet();
    myDataAdapter.Fill(myDataSet, "mytable");
    this.idTextBox.Text = "";
    this.nameTextBox.Text = "";
    this.emailTextBox.Text = "";
    Response.Redirect("testbd.aspx");
    catch
    {
    }
    Возникли вопросы:
    Как извлечь определенный элемент в ( SELECT Email FROM mytable WHERE name="dadada";) в стринг...
    (string a=...?)
    Как узнать сколько элементов в в столбце
    В GridView есть CommandField сделал в нем ShowDeleteButton="true"  как удалить строчку из таблици...
    (в нем есть конечно событие e.RowIndex но оно даеть номер строки... а в реляционная бд же данные хранятся неупорядоченно...)
    И хотелось бы поподробнее про:
    MySqlCommand cmd
    чтото я так его и не понял:(((


    9 января 2010 г. 5:14
  • Как извлечь определенный элемент в ( SELECT Email FROM mytable WHERE name="dadada";) в стринг...
    (string a=...?):

    MySqlCommand cmd = myConnection.CreateCommand();
    cmd.Parameters.AddWithValue("@name", "dadada");
    cmd.CommandText = "SELECT Email FROM mytable WHERE name=@name";
    myDataAdapter = new MySqlDataAdapter(cmd);
    myDataAdapter.Fill(myDataSet, "tablenamedadada");
    if (myDataSet.Tables["tablenamedadada"].Rows.Count == 1)
    {
        emailTextBox.Text = myDataSet.Tables["tablenamedadada"].Rows[0][0].ToString();
    }

    В GridView есть CommandField сделал в нем ShowDeleteButton="true"  как удалить строчку из таблици...
    (в нем есть конечно событие e.RowIndex но оно даеть номер строки... а в реляционная бд же данные хранятся неупорядоченно...):

    MySqlCommand cmd = myConnection.CreateCommand();
    cmd.Parameters.AddWithValue("@id", MySQLDataGrid_0.Rows[e.RowIndex].Cells[0]);
    cmd.CommandText = "delete * FROM mytable WHERE id=@id";
    cmd.ExecuteNonQuery();

    Как узнать сколько элементов в в столбце:

    myDataSet.Tables["mytable"].Columns.Count;

    Не судите строго, сам учусь :)

    +можно почитать:
    OleDbCommand - класс
    OleDbCommand - члены
    9 января 2010 г. 8:59
  • A.Revin спасибо
    только не (Главное все равно понял ;-) )
    myDataSet.Tables["mytable"
    ].Columns.Count;
    а
    myDataSet.Tables["mytable"].Rows.Count

    вот только все-равно не пойму... для чего нужно
    MySqlCommand
    разве нельзя
                    MySqlDataAdapter myDataAdapter;
                    this.infoText.Text = MySQLDataGrid_0.Rows[e.RowIndex].Cells[1].Text.ToString();
                    strSQL = "DELETE FROM mytable WHERE id = " + MySQLDataGrid_0.Rows[e.RowIndex].Cells[1].Text.ToString() + ";";
                    myDataSet = new DataSet();
                    myDataAdapter = new MySqlDataAdapter(strSQL, myConnection);
                    myDataAdapter.Fill(myDataSet, "mytable");

    вместо?
    MySqlCommand cmd = myConnection.CreateCommand();
    cmd.Parameters.AddWithValue("@id" , MySQLDataGrid_0.Rows[e.RowIndex].Cells[0]);
    cmd.CommandText = "delete * FROM mytable WHERE id=@id" ;
    cmd.ExecuteNonQuery();
    чем MySqlCommand лучше?
    11 января 2010 г. 0:43
  • Ну по сути здесь

    MySqlCommand cmd = myConnection.CreateCommand();
    cmd.Parameters.AddWithValue("@id", MySQLDataGrid_0.Rows[e.RowIndex].Cells[0]);
    cmd.CommandText = "delete * FROM mytable WHERE id=@id";
    cmd.ExecuteNonQuery();
    

    и здесь

    strSQL = "DELETE FROM mytable WHERE id = " + MySQLDataGrid_0.Rows[e.RowIndex].Cells[1].Text.ToString() + ";";
    myDataAdapter = new MySqlDataAdapter(strSQL, myConnection);

    мы делаем одно и тоже.

    С помощью MySqlCommand мы выполняем просто команду delete, а в случае с адаптером мы еще и данные получаем

    +некоторые обсуждения:

    OleDbDataAdapter vs OleDbCommand
    OleDbDataAdapter.Update or OleDbCommand.ExecuteNonQuery

    • Предложено в качестве ответа I.Vorontsov 12 января 2010 г. 6:52
    • Помечено в качестве ответа dampirik 13 января 2010 г. 19:39
    11 января 2010 г. 6:30