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

查找用户的界面为:

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 = ;
}

功能实现截图:

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

数据库中编号唯一,手机号码实际中也应该是唯一的。那么,如果出现重名的情况怎么办?

建立点击查看下一个的按钮,首先设置当结果只有一个时,该按钮不可点击,当结果为多个时,点击查看下一个,执行。

写一个重名的用户:

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

在按钮点击事件中:载入查询结果的表格。

然后现在点击查询的事件中,让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();
}
}

执行结果:

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

这样,就能够将相应查询功能写入到scoket数据接收与保存的地方实现功能。

上一篇:笔试常考的Linux命令大全


下一篇:Java初学者作业——实现控制台的猜数字游戏。游戏运行时产生一个1~100之间的随机数字