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 --> 在数据库窗口中,点击“查询”,或在“视图”菜单中选择“数据库对象”-> “查询” --> 点击数据 ...
随机推荐
- springboot用户登陆密码两次md5加密
1.用户端:PASS = MD5(明文 + 固定salt) 2.服务端:PASS = MD5(用户输入 + 随机salt) 引入依赖包 <dependency> <groupId&g ...
- Redirection
Typically, the syntax of these characters is as follows, using < to redirect input, and > to r ...
- regression and anova
regression一般是统计学的回归回归,研究一个随机变量Y对另一个(X)或一组(X1,X2,-,Xk)变量的相依关系的统计分析方法.研究一 个或多个随机变量Y1 ,Y2 ,-,Yi与另一些变量X1 ...
- 汇编语言--微机CPU的指令系统(五)(循环指令)
(8)循环指令 循环结构是程序的三大结构之一.为了方便构成循环结构,汇编语言提供了多种循环指令,这些循环指令的循环次数都是保存在计数器CX或ECX中.除了CX或ECX可以决定循环是否结束外,有的循环指 ...
- angular ng-repeat radio取值
- CSS3 - @keyframes
语法 @keyframes animationname { keyframes-selector {css-styles;} } 值 描述 animationname 必需.定义动画的名称. keyf ...
- cf1132E. Knapsack(搜索)
题意 题目链接 Sol 看了status里面最短的代码..感觉自己真是菜的一批..直接爆搜居然可以过?..但是现在还没终测所以可能会fst.. #include<bits/stdc++.h> ...
- C# 8.0的三个值得关注的新特性
本文翻译自:https://dzone.com/articles/3-new-c-8-features-we-are-excited-about 转载请注明出自:葡萄城官网,葡萄城为开发者提供专业的开 ...
- Android assets文件夹之位置放置和作用
Android 的assets文件夹的放置位置,Eclipse创建项目时就生成了的,Android Studio则不太一样,AS可以包含几种方式, 1:可以在build.gradle文件下配置,加如下 ...
- python语言学习---3
第四天 1.set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的, 这点和 dict 的 key很像. (不信可以输出下试试 ~-~ )另外,其存储的对象必须不可变 ...