Поиск данных на SQL database

      В следующем примере вы увидите простой пользовательский интерфейс, позволяющий пользователям выполнять поиск сотрудников в таблице сотрудников, содержащихся в базе данных Northwind.
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;

namespace Akadia
{
    public class ParamQuery : System.Windows.Forms.Form
    {
        private System.Windows.Forms.ListBox lbFound;
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.TextBox txtFind;
        private System.Windows.Forms.Button btnFind;

        private System.ComponentModel.Container components = null;

        public ParamQuery()
        {
            //Инициализация управления
            InitializeComponent();
        }

        // Главная точка входа для приложения
        static void Main()
        {
            Application.Run(new ParamQuery());
        }

        // Поиск сотрудника и его отображение в List Box
        private void btnFind_Click(object sender, System.EventArgs e)
        {
            SqlDataReader rdr = null;
            SqlConnection con = null;
            SqlCommand cmd = null;

            try
            {
                // Открытые подключение к базе данных
                string ConnectionString = "server=xeon;uid=sa;"+
                    "pwd=manager; database=northwind";
                con = new SqlConnection(ConnectionString);
                con.Open();

                // Создаем запрос к базе данных
                // с текущим подключением.
                string CommandText = "SELECT FirstName, LastName" +
                                     "  FROM Employees" +
                                     " WHERE (LastName LIKE @Find)";
                cmd = new SqlCommand(CommandText);
                cmd.Connection = con;

                // Добавляем в LastName параметр @Find
                cmd.Parameters.Add(
                    new SqlParameter(
                    "@Find", // Имя параметра
                    System.Data.SqlDbType.NVarChar, // SqlDbType значения
                    20, // Длина(количество символов) в параметре
                    "LastName"));  // имя поля(колонки) по которому выполняем поиск

                
                cmd.Parameters["@Find"].Value = txtFind.Text;

                // Заполнение списка результатом запроса
                rdr = cmd.ExecuteReader();

                // Заполнение list box полученным результатом поиска
                lbFound.Items.Clear();
                while(rdr.Read())
                {
                    lbFound.Items.Add(rdr["FirstName"].ToString() +
                    " " + rdr["LastName"].ToString());
                }
            }
            catch(Exception ex)
            {
                // Вывод сообщения об ошибке
                MessageBox.Show(ex.Message);
            }
            finally
            {
                // Закрываем объект data reader и database соединение
                if (rdr != null)
                    rdr.Close();

                if (con.State == ConnectionState.Open)
                    con.Close();
            }
        }
    }
}

2 комментария:

  1. Здравствуйте. Сделал на примере вашей программы свою. Только она не работает(не ищет при нажатии на кнопку, а до этого выдавала ошибку, что такого пользователя нет). Может подскажите База на mysql. Вот код:

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    using System.Windows.Forms;

    using System.Data.SqlClient;

    using System.Data.Sql;

    using System.Collections;

    namespace bd6

    {

    public partial class Form1 : Form

    {





    public Form1()

    {

    InitializeComponent();

    }

    private void Form1_Load(object sender, EventArgs e)

    {

    // TODO: данная строка кода позволяет загрузить данные в таблицу "obekty_licaBDDataSet.fio". При необходимости она может быть перемещена или удалена.

    //this.fioTableAdapter.Fill(this.obekty_licaBDDataSet.fio);



    }





    private void button1_Click(object sender, EventArgs e)

    {

    SqlDataReader rdr = null;

    SqlConnection con = null;

    SqlCommand cmd = null;



    try

    {

    // uid=sa;"+

    // "pwd=manager;

    // Открытые подключение к базе данных

    string ConnectionString = "server=WINCTRL-3K042GG; database=Obekty_licaBD; Integrated Security=True";

    //Data Source=WINCTRL-3K042GG;Initial Catalog=DBPersons;Integrated Security=True

    con = new SqlConnection(ConnectionString);

    con.Open();



    // Создаем запрос к базе данных

    // с текущим подключением.

    string CommandText = "SELECT fam_r, nam_r" +

    " FROM fio" +

    " WHERE (nam_r LIKE @Find)";

    cmd = new SqlCommand(CommandText);

    cmd.Connection = con;



    // Добавляем в LastName параметр @Find

    cmd.Parameters.Add(

    new SqlParameter(

    "@Find", // Имя параметра

    System.Data.SqlDbType.NVarChar, // SqlDbType значения

    20, // Длина(количество символов) в параметре

    "nam_r")); // имя поля(колонки) по которому выполняем поиск





    cmd.Parameters["@Find"].Value = textBox1.Text;



    // Заполнение списка результатом запроса

    rdr = cmd.ExecuteReader();

    // Заполнение list box полученным результатом поиска

    listBox1.Items.Clear();

    while(rdr.Read())

    {

    listBox1.Items.Add(rdr["fam_r"].ToString() +

    " " + rdr["nam_r"].ToString());

    }

    }

    catch(Exception ex)

    {

    // Вывод сообщения об ошибке

    MessageBox.Show(ex.Message);

    }

    finally

    {

    // Закрываем объект data reader и database соединение

    if (rdr != null)

    rdr.Close();



    if (con.State == ConnectionState.Open)

    con.Close();

    }

    }

    }

    }

    ОтветитьУдалить
  2. Здравствуйте, предоставьте пожалуйста структуру таблицы "FIO" и несколько значений из нее. Так же попробуйте выполнить поиск заключив искомое значение в %, например %Алек% или %Светл%.

    ОтветитьУдалить

Большая просьба, не писать в комментариях всякую ерунду не по теме!