创建 WinForm 数据库应用程序执行模糊查询
要求输入用户名在数据库中检索用户名并显示该用户的详细信息
使用 ListView 控件显示用户信息
创建示例数据库
数据库示例代码
use master
go
if exists(select * from sysdatabases where name='test3')
drop database test3
go
create database test3 on primary
(
name='test3_data',
filename='D:\test3_data.mdf',
size=5mb,
maxsize=10mb,
filegrowth=1mb
)
log on
(
name='test3_log',
filename='D:\test3_log.ldf',
size=5mb,
maxsize=10mb,
filegrowth=1mb
)
go
use test3
go
if exists(select * from sysobjects where name='Students')
drop table Students
go
create table Students
(
studentId varchar(20) primary key not null,
userName varchar(20) null,
name varchar(20) null,
userStateId int null
)
go
insert into Students (studentid,username,name,userStateId) values ('100001','leeho','小白',1)
insert into Students (studentid,username,name,userStateId) values ('100002','dna','小黑',0)
go
设计窗体
设置 ListView 控件的 Columns 属性 添加4项
将 ListView 控件的 View 属性设置为 Details
创建DBHelper类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
namespace ADOWinForm
{
class DBHelper
{
public static string conStr = "Data Source=.;Initial Catalog=Test3;"+
"User ID=sa;Pwd=leeho";
public static SqlConnection con = new SqlConnection(conStr);
}
}
构建 Form1 代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace ADOWinForm
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
/*使用代码初始化界面设置
this.listView1.View = View.Details;
ColumnHeader CuserName = new ColumnHeader();
CuserName.Text = "用户名";
ColumnHeader CName = new ColumnHeader();
CName.Text = "姓名";
ColumnHeader CstudentId = new ColumnHeader();
CstudentId.Text = "学号";
ColumnHeader Cstate = new ColumnHeader();
Cstate.Text = "状态";
listView1.Columns.Add(CuserName);
listView1.Columns.Add(CName);
listView1.Columns.Add(CstudentId);
listView1.Columns.Add(Cstate);
*/
}
//检查用户名是否为空
public bool CheckInput()
{
if (textBox1.Text.Trim() == "")
{
MessageBox.Show("请输入用户名!");
//设置光标位置
textBox1.Focus();
return false;
}
else
{
return true;
}
}
//查找并填充 ListView 控件
public void FillListView()
{
//学生ID
string studentId;
//用户名
string userName;
//姓名
string name;
//状态
int userStateId;
//状态字符串形式
string userState;
//SQL 查询语句
string sql = string.Format("select studentId,userName,name,userStateId from "
+"Students where userName like '%{0}%'", textBox1.Text);
try
{
//创建 Command 对象
SqlCommand comm = new SqlCommand(sql, DBHelper.con);
//打开数据库连接
DBHelper.con.Open();
//执行 Command 的 ExecuteReader() 方法 返回 DataReader 对象
SqlDataReader dataReader = comm.ExecuteReader();
//清空 ListView 控件
listView1.Items.Clear();
//如果没有记录
if (!dataReader.HasRows)
{
MessageBox.Show("没有找到!");
}
else
{
//循环读取下一条记录
while (dataReader.Read())
{
//将数据库查到的列值保存到变量中
studentId = (string)dataReader["studentId"];
userName = (string)dataReader["userName"];
name = (string)dataReader["name"];
userStateId = (int)dataReader["userStateId"];
//将状态值转换为字符串形式
userState=userStateId==1?"活动":"非活动";
//创建 ListView 项
ListViewItem item = new ListViewItem();
//设置项头
item.Text = userName;
//设置Tag属性
//item.Tag = (string)dataReader["studentId"];
//在项中添加属性
item.SubItems.AddRange(new string[] { name, studentId, userState });
//将 ListView 项添加到 ListView 控件中
listView1.Items.Add(item);
}
}
//关闭 DataReader 对象
dataReader.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
//关闭数据库
DBHelper.con.Close();
}
}
//查询按钮事件
private void button1_Click(object sender, EventArgs e)
{
//检查用户名是否为空
if (CheckInput())
{
//执行检索数据
FillListView();
}
}
}
}