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 --> 在数据库窗口中,点击“查询”,或在“视图”菜单中选择“数据库对象”-> “查询” --> 点击数据 ...
随机推荐
- Redis 私有云平台 CacheCloud
redis-cachecloud https://github.com/sohutv/cachecloud/wiki/3.%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF%E6 ...
- 5. CopyOnWriteArrayList 的适用场景
package com.gf.demo04; import java.util.ArrayList; import java.util.Collections; import java.util.It ...
- python基础学习(三)变量和类型
变量的作用:变量就是用来存储数据的. 变量的定义 在python中,变量在使用之前需要进行赋值,变量只有赋值后才能使用,如果变量没有赋值就使用会出现什么情况呢?如下图,使用之前变量未定义,会报错,如下 ...
- Hibernate入门(五)---------事务管理
在Hibernate中,可以通过代码来操作管理事务,如通过“Transaction tx = session.beginTransaction()”,开启一个事务,持久化操作后,通过"tx. ...
- git入门 创建版本库, 版本管理 分支 标签
参考: https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 GIT最流行的分布式版本 ...
- 带你使用JS-SDK自定义微信分享效果
前言 想必各位在写wap端时都遇到过这样的场景吧 ----自定义分享标题.图片.描述 接下来小编给大家讲解下分享相关操作 预期效果 原始的分享效果: 使用微信JS-SDK的分享效果: 可以看出缩略图, ...
- arcgis在折点处打断并建立网络分析(最短路径等问题)
目的:GIS网络分析用于对段路径等问题.这里仅仅讲述如何建立网络分析. 网络建立前必须满足以下条件 1.要素文件在节点处打断(本文下面会叙述) 2.要素文件在地理数据库里的数据集里(一般是这样) 3. ...
- 2 >&1 的准确含义
1. 2代表标准错误,2 > 表示重定向,就是把标准错误重定向到 1中,这个1如果想表示标准输出的话,就必须在前面加 & 2. 正常情况下,下面这个会有很多错误信息,但是加上2>& ...
- 通过源码分析View的测量
要理解View的测量,首先要了解MeasureSpec,系统在测量view的宽高时,要先确定MeasureSpec. MeasureSpec(32为int值)由两部分组成: SpecMode(高2位) ...
- IntelliJ IDEA安装、配置、测试
IntelliJ IDEA安装.配置.测试(win7_64bit) 目录 1.概述 2.本文用到的工具 3.安装.激活与配置 4.开发测试 4.1 JavaSE开发测试(确保JDK已正确安装) 4.2 ...