Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавление данных из textbox в базу MySql, Как в запрос вставить данные из textbox? 
:(
    Опции темы
GMC
Дата 16.3.2007, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 12.12.2006

Репутация: нет
Всего: нет



Выложите пожалуйста  код и если можно сам проект. Так же интересует обратная операция, произвести чтение из БД и занести данные в textBox !
PM MAIL   Вверх
Idsa
Дата 16.3.2007, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



У меня установлен 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 библиотеку с провайдером для Мускула.

Это сообщение отредактировал(а) Idsa - 16.3.2007, 14:30


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
GMC
Дата 16.3.2007, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 12.12.2006

Репутация: нет
Всего: нет



Код

    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 колонку, все равно довавляет в ключ...





Это сообщение отредактировал(а) GMC - 16.3.2007, 19:40
PM MAIL   Вверх
Idsa
Дата 16.3.2007, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Скорее всего, поле 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 не добавляй.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
GMC
Дата 17.3.2007, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 12.12.2006

Репутация: нет
Всего: нет



 поле 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
PM MAIL   Вверх
GMC
Дата 17.3.2007, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 12.12.2006

Репутация: нет
Всего: нет



Ошибка  былав следующем:
для 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,спасибо за участие, щас буду работать над обратной операцией, затем обновление и удаление данных останется!




PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0659 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.