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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавление записи в Базу Данных, из Textbox 
:(
    Опции темы
D7na
  Дата 16.6.2011, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 13.5.2009
Где: .net

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



Добрый вечер форумчане. C# учу недавно, в связи с этим возникают дурацкие вопросы, на которые не так просто найти ответы. В общем имеется таблица в БД MSSql в которой всего 2 колонки, и форма на которой: 2 TextBox'a 1 Button и 1 DataGrid. Хотелось бы чтобы данные введенные в TextBox1 и TextBox2, после нажатия на Button, помещались в соответствующие колонки в таблице БД, и отображались в DataGrid'e. База подключена посредством мастера. Интересует код в обработчике событий Button.OnClick.
PM MAIL ICQ Skype   Вверх
MasterOfCode
Дата 16.6.2011, 05:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

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



Уже такой задавали. Например если пролистать страницу вниз, можно увидеть список похожих тем.


--------------------
user posted image
PM ICQ   Вверх
D7na
Дата 16.6.2011, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 13.5.2009
Где: .net

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



Пруфлинк в студию
PM MAIL ICQ Skype   Вверх
jonie
Дата 17.6.2011, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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





--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
D7na
Дата 17.6.2011, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 13.5.2009
Где: .net

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



Добавление данных из textbox в базу MySql. Как я понимаю базы немного разные Вам не кажется?
PM MAIL ICQ Skype   Вверх
D7na
Дата 17.6.2011, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 13.5.2009
Где: .net

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



Вот что имеется на данный момент.
При нажатии на кнопку - сообщение об ошибке.

Код

namespace Arbyte
{
    public partial class Form1 : Form
    {
        private SqlDataAdapter dataAdapter;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'arbyteDataSet.Auth' table. You can move, or remove it, as needed.
            this.authTableAdapter.Fill(this.arbyteDataSet.Auth);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            string s = textBox1.Text;
            string s1 = textBox2.Text;
            if (s == "" || s1 == "")
            {
                MessageBox.Show("Ошибка, не все поля заполнены", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else
            {
                SqlConnection con = new SqlConnection();
                con.ConnectionString = "Data Source=localhost;Initial Catalog=arbyte;User Id=root;Password=";
                con.Open();
                SqlCommand InsCom = new SqlCommand("INSERT INTO Auth VALUES (" + Convert.ToInt32(textBox1.Text) + Convert.ToInt32(textBox2.Text), con);
                if (InsCom.ExecuteNonQuery() == 1)
                {
                    MessageBox.Show("Сведения успешно добавлены", "Добавление", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    con.Close();
                }
            }
        }
    }
}

PM MAIL ICQ Skype   Вверх
jonie
Дата 17.6.2011, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



Цитата(D7na @  17.6.2011,  11:39 Найти цитируемый пост)

При нажатии на кнопку - сообщение об ошибке.

Ошибка типа "ошибка"? Или предлагаете нам угадать7


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
D7na
Дата 18.6.2011, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 13.5.2009
Где: .net

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



Цитата(jonie @  17.6.2011,  21:28 Найти цитируемый пост)
Ошибка типа "ошибка"? Или предлагаете нам угадать7 



Не, ошибка "Не удается подключиться к базе данных", видимо connection string неправильный. Сейчас разбираюсь.

PM MAIL ICQ Skype   Вверх
mongoloid
Дата 18.6.2011, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Поставленную задачу - добавление записи в БД  - можно решить множеством способов. Если вы работаете с использованием мастера, то почему бы не использовать преимущества, которые он дает? Самый простой способ:
  Из вкладки "Источники данных" перетащите свою таблицу на форму. Автоматически получите DataGridView и DataBinding, можете добавлять/удалять/менять записи прямо в таблице.
 
 Если вам нужно делать именно так, как написали вы, т.е. кинуть два TextBox"а и через них вводить данные, то можно сделать, например, так:
 
Код

        private void button1_Click(object sender, EventArgs e)
        {
            testDataSet.testRow nrow = (testDataSet.testRow)testDataSet.test.NewRow();
            nrow.id = 2;
            nrow.column1 = Convert.ToInt32(textBox1.Text);
            nrow.column2 = Convert.ToInt32(textBox2.Text);
            testDataSet.test.AddtestRow(nrow);
        }

 Где testDataSet.test - таблица, созданная мастером при подключении источника данных.   testDataSet.testRow.id, testDataSet.testRow.column1, testDataSet.testRow.column2 - это типизированные поля, созданные мастером согласно структуре вашей таблицы (нашем случае для таблицы test вида (id, column1, column2).

 Что касается кода, который вы привели, то сразу, что режет глаз, это текст запроса: с вашим кодом вы не получите запрос вида "INSERT INTO auth VALUES('value1','value2')". Там же ошибка с типами. Для чего конвертация Convert.ToInt32(textBox1.Text)? Она не нужна, и правильно кавычки с запятыми расставьте.

Добавлено через 8 минут и 2 секунды
 Короче говоря, текста запроса должен выглядеть как-то так:
SqlCommand("INSERT INTO Auth VALUES (" + textBox1.Text + ", " + textBox2.Text + ")"); 

 А вот пример работающего кода для Компакт Едишн:
Код

// подключение к БД
connection.ConnectionString = connString;
            try
            { connection.Open(); MessageBox.Show("БД подключена");}
            catch
            { MessageBox.Show("Не удалось подключиться"); }
            
        }
// Вставка данных
SqlCeCommand command = connection.CreateCommand();
            command.CommandText = "INSERT INTO Params([Name], [Comment1], [Comment2]) VALUES ('Параметр1','Комментарий11','Комментарий22')"; 
            int res = command.ExecuteNonQuery();


То, что перечислено в Params([Name], [Comment1], [Comment2]) - необязательно, можно было написать и так: "INSERT INTO Params VALUES ('Параметр1','Комментарий11','Комментарий22')"
PM MAIL   Вверх
D7na
Дата 18.6.2011, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 13.5.2009
Где: .net

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



Mongoloid, огромное Вам спасибо. Все заработало.
Единственное компилятор ругался на строчки
Код

nrow.Login = Convert.ToInt32(textBox1.Text);
nrow.Password = Convert.ToInt32(textBox2.Text);

Сообщением: Cannot implicitly convert type 'int' to 'string'

Заменив их на 
Код

nrow.Login = textBox1.Text;
nrow.Password = textBox2.Text;
 
Все скомпилировалось.

В итоге код обработчика нажатия кнопки выглядит следующим образом:

Код

private void button1_Click(object sender, EventArgs e)
        {
            arbyteDataSet.AuthRow nrow = (arbyteDataSet.AuthRow)arbyteDataSet.Auth.NewRow();
            nrow.Login = textBox1.Text;
            nrow.Password = textBox2.Text;
            arbyteDataSet.Auth.AddAuthRow(nrow);
        }


Как теперь сделать чтобы данные сохранялись в базе после добавления? При закрытии программы и открытии вновь, база данных пустая.

Ответ нашел сам:
Код

private void button2_Click(object sender, EventArgs e)
        {
            authTableAdapter.Update(arbyteDataSet.Auth);
        }


Это сообщение отредактировал(а) D7na - 18.6.2011, 11:53
PM MAIL ICQ Skype   Вверх
mongoloid
Дата 18.6.2011, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

            nrow.id = 2;
            nrow.column1 = Convert.ToInt32(textBox1.Text);
            nrow.column2 = Convert.ToInt32(textBox2.Text);


 У меня nrow.column1 = Convert.ToInt32(textBox1.Text) только потому, что в таблице test тип полей column1 и column2 - int. Поэтому потребовалось конвертировать. В вашем случае, очевидно, тип полей - string, поэтому все верно, вам не нужно конвертировать.

Это сообщение отредактировал(а) mongoloid - 18.6.2011, 12:15
PM MAIL   Вверх
D7na
Дата 18.6.2011, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 13.5.2009
Где: .net

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



Создал вторую форму, на которой 2 кнопки и 1 DataGridView. Форма предназначена для удаления данных из таблицы. 

А вот с кодом для кнопки удаления записей, проблемы:

Код

private void button1_Click_1(object sender, EventArgs e)
        {
            (arbyteDataSetBindingSource.Current as DataRowView).Row.Delete();
        }


Необходимо чтобы удалялась строка выделенная в DataGrid'e.
При компиляции все нормально. 
При выполнении программы когда я нажимаю на кнопку удаления записи компилятор выдает ошибку:
"Object reference not set to an instance of an object."
Объясните что я делаю не так?
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

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

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

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


 




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


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

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