access数据库查找以及如果结果中存在多个匹配用户该怎么处理?
查找用户的界面为:

首先对查找条件进行赋值:
if (radioButton1.Checked)
serMatchInfo = "用户姓名";
if (radioButton2.Checked)
serMatchInfo = "用户编号";
if (radioButton3.Checked)
serMatchInfo = "手机号码";
之后判断匹配信息是否输入:
if (serMatchInfo == "")
{
MessageBox.Show("请选择查询条件!", "提示",MessageBoxButtons.OK,MessageBoxIcon.Asterisk);
}
else
{
if (textBoxSearch.Text.Trim() == "")
{
MessageBox.Show("请输入匹配信息!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else。。。。
然后建立数据库连接,进行查询操作:
serMatchInput = textBoxSearch.Text.Trim();
OleDbConnection conn = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source=****.mdb"); //Jet OLEDB:Database Password=
OleDbCommand cmd = conn.CreateCommand();
cmd.CommandText = "select * from userFile where ["+ serMatchInfo+"]='"+ serMatchInput+"'";
conn.Open();
OleDbDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
if (dr.HasRows)
{
for (int i = ; i < dr.FieldCount; i++)
{
dt.Columns.Add(dr.GetName(i));
}
dt.Rows.Clear();
}
while (dr.Read())
{
DataRow row = dt.NewRow();
for (int i = ; i < dr.FieldCount; i++)
{
row[i] = dr[i];
}
dt.Rows.Add(row);
}
设定一个参数传入查询结果的行数,以此判断结果。
如果不存在用户:
searchCount = dt.Rows.Count;//记录查询的条数
conn.Close();
if (searchCount == )
{
infoSearch.Show();
infoSearch.Text = "不存在" + serMatchInfo + "为:" + serMatchInput + "的用户信息!";
textBoxName.Text = "";
textBoxName.Text = "";
textBoxId.Text = "";
textBoxPh.Text = "";
textBoxGen.Text = "";
textBoxBir.Text = "";
textBoxAge.Text = "";
buttonNext.ForeColor = Color.Black;
buttonNext.Enabled = false; }
如果存在一个匹配用户:
if (searchCount == )
{
buttonNext.ForeColor = Color.Black;
buttonNext.Enabled = false;
infoSearch.Show();
infoSearch.Text = "一共查询到" + searchCount + "条记录!";
textBoxName.Text = dt.Rows[]["用户姓名"].ToString();
textBoxName.Text = dt.Rows[]["用户姓名"].ToString();
textBoxId.Text = dt.Rows[]["用户编号"].ToString();
textBoxPh.Text = dt.Rows[]["手机号码"].ToString();
textBoxGen.Text = dt.Rows[]["性别"].ToString();
textBoxBir.Text = dt.Rows[]["出生日期"].ToString();
textBoxAge.Text = dt.Rows[]["年龄"].ToString();
buttonClick = ;
}
功能实现截图:

数据库中编号唯一,手机号码实际中也应该是唯一的。那么,如果出现重名的情况怎么办?
建立点击查看下一个的按钮,首先设置当结果只有一个时,该按钮不可点击,当结果为多个时,点击查看下一个,执行。
写一个重名的用户:

在按钮点击事件中:载入查询结果的表格。
然后现在点击查询的事件中,让buttonClick = 0;//这个值是用来记录点击的次数的,进而对应查询结果的行数,这样的话,就能够不论在什么时候点击查询,都能够让多个结果从第一个显示到最后一个,而不出现连续点击的时候重复显示的情况。
对点击查看下一个按钮的事件进行逻辑判断:
private void buttonNext_Click(object sender, EventArgs e)
{
serMatchInput = textBoxSearch.Text.Trim();
OleDbConnection conn = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source=xueya.mdb"); //Jet OLEDB:Database Password=
OleDbCommand cmd = conn.CreateCommand();
cmd.CommandText = "select * from userFile where [" + serMatchInfo + "]='" + serMatchInput + "'";
conn.Open();
OleDbDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
if (dr.HasRows)
{
for (int i = ; i < dr.FieldCount; i++)
{
dt.Columns.Add(dr.GetName(i));
}
dt.Rows.Clear();
}
while (dr.Read())
{
DataRow row = dt.NewRow();
for (int i = ; i < dr.FieldCount; i++)
{
row[i] = dr[i];
}
dt.Rows.Add(row);
}
conn.Close();
if(buttonClick == dt.Rows.Count-)
{
textBoxName.Text = dt.Rows[]["用户姓名"].ToString();
textBoxName.Text = dt.Rows[]["用户姓名"].ToString();
textBoxId.Text = dt.Rows[]["用户编号"].ToString();
textBoxPh.Text = dt.Rows[]["手机号码"].ToString();
textBoxGen.Text = dt.Rows[]["性别"].ToString();
textBoxBir.Text = dt.Rows[]["出生日期"].ToString();
textBoxAge.Text = dt.Rows[]["年龄"].ToString();
buttonClick = ;
}
else
{
buttonClick += ;
textBoxName.Text = dt.Rows[buttonClick]["用户姓名"].ToString();
textBoxName.Text = dt.Rows[buttonClick]["用户姓名"].ToString();
textBoxId.Text = dt.Rows[buttonClick]["用户编号"].ToString();
textBoxPh.Text = dt.Rows[buttonClick]["手机号码"].ToString();
textBoxGen.Text = dt.Rows[buttonClick]["性别"].ToString();
textBoxBir.Text = dt.Rows[buttonClick]["出生日期"].ToString();
textBoxAge.Text = dt.Rows[buttonClick]["年龄"].ToString();
}
}
执行结果:



这样,就能够将相应查询功能写入到scoket数据接收与保存的地方实现功能。
access数据库查找以及如果结果中存在多个匹配用户该怎么处理?的更多相关文章
- c#程序中使用"like“查询access数据库语句的问题
在写使用access数据库的c#程序过程中,遇到各种莫名奇妙的问题.例如使用"like"进行模糊查询,在access查询视图中要使用"*"做模糊匹配(sql中是 ...
- 数据分析---SQL(Access数据库)
1. SQL(Structure Quest Language) 一种结构化查询语言,它是一种通用的关系型数据库操作语言,用于存取数据,查询,更新和管理数据库. 2. 基本语句 Select, Cre ...
- 配置serv-u access数据库遇到的一些问题
配置好access数据库后,需要建个web页面来供用户修改密码,但修改时,提示:odbc被占用无法打开. serv-u一直在保持打开access数据库.我们需要将数据库设置默认打开方式为共享,不锁定. ...
- Java Web项目中连接Access数据库的配置方法
本文是对前几天的"JDBC连接Access数据库的几种方式"这篇的升级.因为在做一些小项目的时候遇到的问题,因此才决定写这篇博客的.昨天已经将博客公布了.可是后来经过一些验证有点问 ...
- c#程序中使用"like“查询access数据库查询为空的问题
今天,在开发的过程中发现了一个特别奇怪的问题:access中like查询时候,在Access数据库中执行,发现可以查询出结果,这是在数据库上执行,select * from KPProj where ...
- 微软BI 之SSIS 系列 - 在 SSIS 中导入 ACCESS 数据库中的数据
开篇介绍 来自 天善学院 一个学员的问题,如何在 SSIS 中导入 ACCESS 数据表中的数据. 在 SSIS 中导入 ACCESS 数据库数据 ACCESS 实际上是一个轻量级的桌面数据库,直接使 ...
- Access数据库导入到SQL Server 2005 Express中
安装好SQL Server 2005 Express后,再安装SQL Server Management Studio Express CTP就可以很方便的使用控制台进行数据库的管理.但SQL Ser ...
- 如何在Asp.net中备份Access数据库?
public void Create( string mdbPath ) { if( File.Exists(mdbPath) ) //检查数据库是否已存在 { thr ...
- Access数据库和SQL Server数据库在实际应用中的区别
1.在Access数据库中简历查询语句的步骤 --> 打开你的MDB --> 在数据库窗口中,点击“查询”,或在“视图”菜单中选择“数据库对象”-> “查询” --> 点击数据 ...
随机推荐
- [日常] PHP库函数fgetss的BUG
1. fgetss函数php官网的解释是: (PHP 4, PHP 5, PHP 7) fgetss — 从文件指针中读取一行并过滤掉 HTML 标记 2. 测试后出现的问题是: 当文本中有一行数据 ...
- swoole扩展实现真正的数据库连接池
php的数据库连接池一直以来都是一个难题,很多从php语言转向java的项目,大多数原因可能都是因为java有更好的连接池实现.php的mysql扩展提供了长连接的API,但在php机器数量较多,规模 ...
- String的坑
想必大家在熟悉不过了,不错今天就遇到了这个万年坑,哪怕喜欢翻源码的人,也不屑一顾翻它的源码,良言相劝最好翻下源码. 1. String为啥被定义为final ? 2. String是线程安全的么 ...
- mysql date_format()函数
DATE_FORMAT(DATE,FORMAT)函数 占位符 说明 %a 缩写的星期几(Sun.....Sat) %b 缩写的月份(Jan.....Dec) %c 数字形式的月份(1.......1 ...
- 剑指offer:1.找出数组中重复的数(java版)
数组中重复的数:题目:找出数组中重复的数,题目描述:在一个长度为n的数组里的所有数字都在0到n-1的范围内.数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任 ...
- sql片段
1):定义sql片段 <!-- 定义sql片段 --> <!-- id: sql片段的标识 经验:1:基于单表来定义sql片段,这样的话sql片段的可重用性才高 2:sql片段中不要 ...
- [JavaScript]手机滑动图片
思路 1.用ul ,li 来装载滑动的图片,超出部分隐藏 2.滑动是通过改变ul的位置来实现 布局 模块 1: 根据li元素个数去设置ul的宽度 1.1 获取ul元素 1.2 获取li元素的个数 1. ...
- BZOJ 2940: [Poi2000]条纹(Multi-Nim)
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 110 Solved: 70[Submit][Status][Discuss] Description ...
- 【读书笔记】iOS-库
一,OS X和iOS自带一些标准的C程序库和操作系统相关的特殊性.在MAC和iOS的世界里,静态库采用.a扩展名(静态对象代码库存档),动态加载库采用.dylib扩展名.如果开发人员来自于Linux世 ...
- 适用于VS C++环境的注释代码段,可以让你的代码被使用时有高可读性的注释
编码时,在对高级语言(C#/VB etc)函数的访问时,经常会有很明确的函数功能提示,参数提示,与返回值提示.微软的VisualStudio C++集成开发环境同样有这样的功能,只是常见开源的代码很少 ...