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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> получить данные из БД SQL server по значению textb, c#+БД SQL 
:(
    Опции темы
kama3uk
Дата 6.3.2013, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день. Сделал програмулину которая записывает инфу с текстбоксов в бд, все нормально работает.

Код

private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection scn = new SqlConnection(" data source = ACY314_05_PGTKK;initial catalog = Test_db;integrated security = true ");
            SqlDataAdapter sda = new SqlDataAdapter();
            sda.InsertCommand = new SqlCommand("insert into gaz values(@lch, @city, @street, @dom, @kv)", scn);
            sda.InsertCommand.Parameters.Add("@lch", SqlDbType.VarChar).Value = textBox1.Text;
            sda.InsertCommand.Parameters.Add("@city", SqlDbType.VarChar).Value=textBox2.Text;
            sda.InsertCommand.Parameters.Add("@street", SqlDbType.VarChar).Value=textBox3.Text;
            sda.InsertCommand.Parameters.Add("@dom", SqlDbType.VarChar).Value=textBox4.Text;
            sda.InsertCommand.Parameters.Add("@kv", SqlDbType.VarChar).Value = textBox5.Text;
            scn.Open();
            sda.InsertCommand.ExecuteNonQuery();
            scn.Close();
 
        }

по столбцу lch надо сделать поиск:
 в textbox(lch) вводим какоето значение и ищем его в lch как токо нашли выводим остальные строки по данному lch в textbox'ы.(city,street,dom,kv)
 Помогите реализовать! ! !


Делаю так 
Код

 SqlConnection scn = new SqlConnection(" data source=ACY314_05_PGTKK;" +
            "initial catalog = Test_db;integrated security = true ");
            SqlDataAdapter sda = new SqlDataAdapter();
            sda.InsertCommand = new SqlCommand("SELECT * FROM gaz WHERE lch =",textBox1.Text);


но что то не так .
PM MAIL   Вверх
jsharp36
Дата 8.3.2013, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



1.
Код

private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection scn = new SqlConnection(" data source = ACY314_05_PGTKK;initial catalog = Test_db;integrated security = true ");
            SqlDataAdapter sda = new SqlDataAdapter();
            sda.InsertCommand = new SqlCommand("insert into gaz values(@lch, @city, @street, @dom, @kv)", scn);
            sda.InsertCommand.Parameters.Add("@lch", SqlDbType.VarChar).Value = textBox1.Text;
            sda.InsertCommand.Parameters.Add("@city", SqlDbType.VarChar).Value=textBox2.Text;
            sda.InsertCommand.Parameters.Add("@street", SqlDbType.VarChar).Value=textBox3.Text;
            sda.InsertCommand.Parameters.Add("@dom", SqlDbType.VarChar).Value=textBox4.Text;
            sda.InsertCommand.Parameters.Add("@kv", SqlDbType.VarChar).Value = textBox5.Text;
            scn.Open();
            sda.InsertCommand.ExecuteNonQuery();
            scn.Close();
 
        }


не есть гуд. Прямо в обработчик кнопки встроено обращение к базе. А главное - используйте обязательно для типов, реализующих интерфейс IDisposable using. Любые внешние ресурсы должны гарантированно освобождаться, даже в случае ошибки. Конекшины тоже сюда относятся. Т.е. код надо писать где-то так:
Код

private void button1_Click(object sender, EventArgs e)
{
    using (SqlConnection scn = new SqlConnection(" data source = ACY314_05_PGTKK;initial catalog = Test_db;integrated security = true "))
    {
        using (SqlDataAdapter sda = new SqlDataAdapter())
        {
            sda.InsertCommand = new SqlCommand("insert into gaz values(@lch, @city, @street, @dom, @kv)", scn);
            sda.InsertCommand.Parameters.Add("@lch", SqlDbType.VarChar).Value = textBox1.Text;
            sda.InsertCommand.Parameters.Add("@city", SqlDbType.VarChar).Value = textBox2.Text;
            sda.InsertCommand.Parameters.Add("@street", SqlDbType.VarChar).Value = textBox3.Text;
            sda.InsertCommand.Parameters.Add("@dom", SqlDbType.VarChar).Value = textBox4.Text;
            sda.InsertCommand.Parameters.Add("@kv", SqlDbType.VarChar).Value = textBox5.Text;
            scn.Open();
            sda.InsertCommand.ExecuteNonQuery();
            scn.Close();
        }
    }
}


2. 

Код

SqlConnection scn = new SqlConnection(" data source=ACY314_05_PGTKK;" +
            "initial catalog = Test_db;integrated security = true ");
            SqlDataAdapter sda = new SqlDataAdapter();
            sda.InsertCommand = new SqlCommand("SELECT * FROM gaz WHERE lch =",textBox1.Text);

У  SqlCommand даже нет такого конструктора, который бы брал два стринга. Потом, вы устанавливаете в адаптер зачем-то InsertCommand. Вы же выборку делаете из таблицы, а не вставку?

Заводите в тексте запроса переменную, как обычно начинающуюся на знак @. Т.е. текст запрос будет выглядеть так: "SELECT * FROM gaz WHERE lch = @IchValue". С т.з. шарпа это просто стринг, без переменных. И добавляете параметр с таким же именем. Например, так:

Код

    DataSet dataSet = new DataSet();
    using (SqlConnection scn = new SqlConnection(" data source = ACY314_05_PGTKK;initial catalog = Test_db;integrated security = true "))
    {
        using (SqlDataAdapter sda = new SqlDataAdapter())
        {
            sda.SelectCommand.Connection = scn;
            sda.SelectCommand = new SqlCommand("SELECT * FROM gaz WHERE lch = @IchValue");
            SqlParameter ichValueParameter = new SqlParameter("@IchValue", SqlDbType.VarChar);
            ichValueParameter.Value = textBox1.Text;
            sda.SelectCommand.Parameters.Add(ichValueParameter);

            scn.Open();
            sda.Fill(dataSet);
            scn.Close();
        }
    }


Должно работать. И убирайте звездочки в запросах. Нехорошо это. А также, судя по коду, вы используете какой-то тип в базе VARCHAR. Разрабатывайте сразу в юникоде. Зачем вам лишние проблемы. В базе используйте тип NVARCHAR, а на стороне шарпа соотвественно: SqlDbType.NVarChar
PM MAIL   Вверх
kama3uk
Дата 11.3.2013, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



jsharp36 СПС огромное работает. А как сделать так: 
Я в textbox1 ввожу значение lch(к примеру "2")потом идет подключение к бд и по этому значению ищет нужную строку.Как только нашел строку со здначением "2",в остальные textbox'ы(city, street, dom, kv) выводит соответствующие данные.? 
PM MAIL   Вверх
jsharp36
Дата 12.3.2013, 01:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Без никаких проблем. Я выше уже код показал.

Берете DataSet, пихаете в  DataAdapter, пишете нужный запрос - и вуаля, в датасете окажется табличка с одной строкой. Ее то надо разобрать по колонкам и раскидать по контролам.


На самом деле, хоть это и будет работать - это полная ерунда и учебный пример. Вы пробуйте. Но в реальных проектах никто датасетами не пользуется. 
Пользуются ORM. И Binding. Вот последнее, замечательно позволяет отображать на контролах данные без кодирования. 

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

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

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

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


 




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


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

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