В следующем примере вы увидите простой пользовательский интерфейс, позволяющий пользователям выполнять поиск сотрудников в таблице сотрудников, содержащихся в базе данных 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(); } } } }
Здравствуйте. Сделал на примере вашей программы свою. Только она не работает(не ищет при нажатии на кнопку, а до этого выдавала ошибку, что такого пользователя нет). Может подскажите База на 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();
}
}
}
}
Здравствуйте, предоставьте пожалуйста структуру таблицы "FIO" и несколько значений из нее. Так же попробуйте выполнить поиск заключив искомое значение в %, например %Алек% или %Светл%.
ОтветитьУдалить