Войти

Показать полную графическую версию : [решено] Добавление записей в таблицу БД


Alex.sys
05-04-2011, 01:46
Доброго времени суток. Прошу помощи по ASP.NET.(Пишу на С#) Есть БД в которой создана таблица Questions и Answers. В таблице три поля QuestionID, Otvetuser, Otvetadmin. Мне нужно записать в поле Otvetuser строку например из Textbox, а потом сравнить её с строкой из поля Otvetadmin(строка в поле Otvetadmin была создана зарание) При совпадении строк в двух полях перезаписать например "ответ правильный" в талицу Answers. В С# я новичок. Как это можно реализовать. Весь гугл перелазил, нашол примеры но не один из них не работает коректно.

Delirium
05-04-2011, 01:58
маловато данных для корректного ответа. Когда должна проводиться проверка? После того как занесли в БД данные?
Что не получается реализовать, синтаксис SQL запроса, или же отправка данных на сервер?
Подробней опиши задачу, отвечу, задача простейшая.

Alex.sys
05-04-2011, 02:19
нужно внести даные в БД. После внесения вывести даные SQL запросом с условием при совпадении строк в двух полях перезаписать например "ответ правильный" в талицу Answers »

не получается реализовать синтаксис SQL запроса и отправку данных на сервер »

Delirium
05-04-2011, 02:41
Цитата Delirium:
не получается реализовать синтаксис SQL запроса и отправку данных на сервер » »
А что ж тогда получается то? Давай, давай, показывай, что не получается, как пытался сделать, какие ошибки. Я не буду сейчас поднимать исходники и искать решение, пока не увижу хотя бы попыток решить самому.

Alex.sys
30-04-2011, 17:58
Delirium, Вот вставка только она не работает почемуто :( :(


Dim newNameRow As DataRow = DataSet1.Tables("Regis").NewRow()
newNameRow("Name") = Name.Text
DataSet1.RegisDataTable("Regis").Rows.Add(newNameRow)

Delirium
03-05-2011, 01:05
Так ты вставляешь в DataSet данные, а не в базу. Чего бы ради она вставляла в базу то? Тебе надо организовывать соединение с SQL сервером, и вставлять данные через текст SQL или через заранее написанную хранимую процедуру. Что то в таком духе:

SqlCommand cmd = new SqlCommand();
SqlConnection conn = new SqlConnection();
SqlDataAdapter sqlDA;
cmd.CommandText = "insert into table (myname) values (' " + Name.Text + "')";
conn = new SqlConnection("строка соединения с сервером");
sqlDA = new SqlDataAdapter(cmd);
sqlDA.SelectCommand.Connection = conn;
conn.Open();
cmd.ExecuteNonQuery();

P.S. Дублировать темы не обязательно, толку от этого не будет.

Alex.sys
03-05-2011, 14:28
Delirium, Спасибо. Попробую отпишусь

Alex.sys
04-05-2011, 01:15
Delirium,


protected void Button1_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand();
SqlConnection conn = new SqlConnection();
SqlDataAdapter sqlDA;
cmd.CommandText = "insert into table (Regis) values (' " + name.Text + "')";
conn = new SqlConnection("data source=.\\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\\Database.mdf;User Instance=true");
sqlDA = new SqlDataAdapter(cmd);
sqlDA.SelectCommand.Connection = conn;
conn.Open();
cmd.ExecuteNonQuery();
}
}



При нажатии на button в браузере выкидывает ошибку. Посмотри скрин пожалуйста

Delirium
04-05-2011, 01:15
Alex.sys, сам разобрался? :) Не надо в Insert писать слово table, вместо него - имя таблицы, а в скобках - поля, в которые заносим данные, через запятую.

т.е. если таблица зовется Employee, а поле в ней - FIO, то и пишем
insert into Employee (FIO) values ('Иванов')

Alex.sys
04-05-2011, 02:09
Delirium, Все вроде работает, спасибо. Только как вместо Иванова привинтить textbox. Что б фамилию сначало надо было ввести в него, и при нажатии на кнопку запись заносилась в поле таблицы из textbox

protected void Button1_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand();
SqlConnection conn = new SqlConnection();
SqlDataAdapter sqlDA;
cmd.CommandText = "insert into Tab (FIO) values ('Иванов')";
conn = new SqlConnection("data source=.\\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\\Database.mdf;User Instance=true");
sqlDA = new SqlDataAdapter(cmd);
sqlDA.SelectCommand.Connection = conn;
conn.Open();
cmd.ExecuteNonQuery();
}
}


Пробывал так cmd.CommandText = "insert into Tab (FIO) values ('+fio.text+')";
Только всеравно заносится как текст +fio.text+. Как можно это сделать?

Delirium, Спасибо вам большое разобрался!!! Удачи, здоровья, творческих успехов. Тему можно закривать

Delirium
04-05-2011, 03:46
Ну вот и чудненько :)
Рекомендую только такие вещи делать по другому. Создается хранимая процедура в SQL, которая принимает параметр - ФИО. Добавляется эта процедура в DataSet, и потом просто вызывается эта процедура с параметром. Таким образом гораздо проще будет - не надо писать портянку соединения с SQL каждый раз и отладка будет гораздо проще. Приведу пример.
Вставляем в DataSet процедуру. Просто перетаскиваем ее из дерева подключений. Назовем адаптер, к примеру, KtsDocDataSetTableAdapters . В коде программы пишем объявление процедуры:
и далее просто указываем функцию:
KtsDocDataSetTableAdapters.StoredProceduresAdapter ad = new KtsDocDataSetTableAdapters.StoredProceduresAdapter();
ad.sp_InsertDataToUsers(MyTextBox.Text); //sp_InsertDataToUsers - имя процедуры в SQL.




© OSzone.net 2001-2012