Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Добавление данных из textbox в базу MySql


Автор: GMC 16.3.2007, 14:03
Выложите пожалуйста  код и если можно сам проект. Так же интересует обратная операция, произвести чтение из БД и занести данные в textBox !

Автор: Idsa 16.3.2007, 14:25
У меня установлен MySQL Connector .NET 1.0.7. Сам Мускул не стоит, так что код не проверял. Подходящее значение connectionString найдешь на connectionstring.com. Ну а сам код вот:
Код

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MySql.Data.MySqlClient;

namespace TestApp
{
  class Program
  {
    public static string ReadString()
    {
      string returnString;
      string connectionString = "...";
      using (MySqlConnection connection = new MySqlConnection(connectionString))
      {
        string commandText = "select text from myTable where id = 1";
        using (MySqlCommand command = new MySqlCommand(commandText, connection))
        {
          connection.Open();
          command.CommandType = CommandType.Text;
          returnString = (string)command.ExecuteScalar();
        }
      }
      return returnString;
    }

    public static void WriteString(string whatToWrite)
    {
      string connectionString = "...";
      using (MySqlConnection connection = new MySqlConnection(connectionString))
      {
        string commandText = "insert into myTable (text) values (@par1)";
        using (MySqlCommand command = new MySqlCommand(commandText, connection))
        {
          connection.Open();
          command.CommandType = CommandType.Text;
          command.Parameters.Add("@par1", whatToWrite);
          command.ExecuteNonQuery();
        }
      }
    }

    static void Main(string[] args)
    {
      textBox1.Text = Program.ReadString();
      WriteString(textBox1.Text);
    }
  }
}

P. S. Не забудь добавить в References библиотеку с провайдером для Мускула.

Автор: GMC 16.3.2007, 19:36
Код

    public static void WriteString(string whatToWrite, string whatToWrite2, string whatToWrite3)
        {
            string connectionString = "datasource=localhost;username=root;password=mc;database=Customer";
            using (MySqlConnection connection = new MySqlConnection(connectionString))
            {
                string commandText = "insert into duel (id,nm,tel) values (@a,@b,@c)";
                using (MySqlCommand command = new MySqlCommand(commandText, connection))
                {
                    connection.Open();
                    command.CommandType = CommandType.Text;
                    command.Parameters.Add("@a", whatToWrite);
                    command.Parameters.Add("@b", whatToWrite2);
                    command.Parameters.Add("@c", whatToWrite3);
                    command.ExecuteNonQuery();
                }
            }
        }

 private void button1_Click(object sender, EventArgs e)
        {

            WriteString(textBox1.Text, textBox2.Text, textBox2.Text);
          //  WriteString2(textBox2.Text);
        
        }   


Таблица
di(int)   nm(char)   tel(int)
1          ivan          8923
2          petya        8922

после выполнения кода выдает:
Таблица
di   nm   tel
1   ivan  8923
2   petya 8922
3
4
5
.
.
.
и так далее увеличивает только ключ, если просто попробывать добавить только 2 или 3 колонку, все равно довавляет в ключ...




Автор: Idsa 16.3.2007, 21:02
Скорее всего, поле id у тебя стоит autoincrement. Поэтому передавать его зн[code=csharp]
ачение не нужно: оно само увеличится автоматически при вставке данных. Т. е. попробуй изменить вот эту строчку:
Код

string commandText = "insert into duel (id,nm,tel) values (@a,@b,@c)";

на
Код

string commandText = "insert into duel (nm,tel) values (@b,@c)";

Ну и параметр @a не добавляй.

Автор: GMC 17.3.2007, 12:28
 поле id похоже autoincrement.добавляя 2 и 3 строку все равно увеличивается ключ только. Измененный кода:

Код

public static void WriteString(string whatToWrite, string whatToWrite2, string whatToWrite3)
    {
            string connectionString = "datasource=localhost;username=root;password=mc;database=Customer";
            using (MySqlConnection connection = new MySqlConnection(connectionString))
            {
                string commandText = "insert into duel (nm,tel) values (@b,@c)";
                using (MySqlCommand command = new MySqlCommand(commandText, connection))
                {
                    connection.Open();
                    command.CommandType = CommandType.Text;

                 //   command.Parameters.Add ("@a", whatToWrite);
                    command.Parameters.Add ("@b", whatToWrite2);
                    command.Parameters.Add ("@c", whatToWrite3); 
                    command.ExecuteNonQuery();
                }
            }
        }

 private void button1_Click(object sender, EventArgs e)
        {

            WriteString(textBox1.Text, textBox2.Text, textBox3.Text);
         }




Кстати а разве ненужно тип данных параметров явно указывать? например вот так:
Код

                  //  command.Parameters.Add("@1", MySqlDbType.Int32);   command.Parameters.Insert("@1", whatToWrite);
                  //  command.Parameters.Add("@2", MySqlDbType.VarChar); command.Parameters.Insert("@2", whatToWrite2);
                  //  command.Parameters.Add("@3", MySqlDbType.Char);    command.Parameters.Insert("@3", whatToWrite3);

тоесть опеределение типа, и если я правильно понимаю UNSERT это подстановка данных в параметры.

Idsa, попробуй код проверить на практике, а то так долго будем разбираться!

PS: у меня установлен MySQL Connector Net 1.0.8 , MySql 5.0

Автор: GMC 17.3.2007, 14:04
Ошибка  былав следующем:
для MySQL параметры должны начинаться не c "@", а с "?"
 
Код

 string commandText = "insert into duel (id,nm,tel) values (?a,?b,?c)";

                    command.Parameters.Add("?a", whatToWrite);
                    command.Parameters.Add("?b", whatToWrite2);
                    command.Parameters.Add("?c", whatToWrite3);

ВСе изменил и все  заработало как надо!

Вот только проблема с кодировкой, когда русскую строку вводишь, пишет в базе "??????" , в MySQL у типа CHAR ставил ASCII и UNICOD - не помогает :-( . как Решить вопрос с кодировкой?

Idsa,спасибо за участие, щас буду работать над обратной операцией, затем обновление и удаление данных останется!




Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)