在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
查找用户的界面为: 首先对查找条件进行赋值: 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 = 0; i < dr.FieldCount; i++) { dt.Columns.Add(dr.GetName(i)); } dt.Rows.Clear(); } while (dr.Read()) { DataRow row = dt.NewRow(); for (int i = 0; i < dr.FieldCount; i++) { row[i] = dr[i]; } dt.Rows.Add(row); } 设定一个参数传入查询结果的行数,以此判断结果。 如果不存在用户: searchCount = dt.Rows.Count;//记录查询的条数 conn.Close(); if (searchCount == 0) { 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 == 1) { buttonNext.ForeColor = Color.Black; buttonNext.Enabled = false; infoSearch.Show(); infoSearch.Text = "一共查询到" + searchCount + "条记录!"; textBoxName.Text = dt.Rows[0]["用户姓名"].ToString(); textBoxName.Text = dt.Rows[0]["用户姓名"].ToString(); textBoxId.Text = dt.Rows[0]["用户编号"].ToString(); textBoxPh.Text = dt.Rows[0]["手机号码"].ToString(); textBoxGen.Text = dt.Rows[0]["性别"].ToString(); textBoxBir.Text = dt.Rows[0]["出生日期"].ToString(); textBoxAge.Text = dt.Rows[0]["年龄"].ToString(); buttonClick = 0; } 功能实现截图: 数据库中编号唯一,手机号码实际中也应该是唯一的。那么,如果出现重名的情况怎么办? 建立点击查看下一个的按钮,首先设置当结果只有一个时,该按钮不可点击,当结果为多个时,点击查看下一个,执行。 写一个重名的用户: 在按钮点击事件中:载入查询结果的表格。 然后现在点击查询的事件中,让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 = 0; i < dr.FieldCount; i++) { dt.Columns.Add(dr.GetName(i)); } dt.Rows.Clear(); } while (dr.Read()) { DataRow row = dt.NewRow(); for (int i = 0; i < dr.FieldCount; i++) { row[i] = dr[i]; } dt.Rows.Add(row); } conn.Close(); if(buttonClick == dt.Rows.Count-1) { textBoxName.Text = dt.Rows[0]["用户姓名"].ToString(); textBoxName.Text = dt.Rows[0]["用户姓名"].ToString(); textBoxId.Text = dt.Rows[0]["用户编号"].ToString(); textBoxPh.Text = dt.Rows[0]["手机号码"].ToString(); textBoxGen.Text = dt.Rows[0]["性别"].ToString(); textBoxBir.Text = dt.Rows[0]["出生日期"].ToString(); textBoxAge.Text = dt.Rows[0]["年龄"].ToString(); buttonClick = 0; } else { buttonClick += 1; 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数据接收与保存的地方实现功能。 |
请发表评论