C# 如何读取多个表的内容并且判断

lidaoying 2018-09-20 03:44:17
我用的是MYSQL数据库,数据库表一select * from user里面有个username和pin字段,表二select * from pin里面也有个PIN字段

我要判断TEXTBOX1和数据库select * from user的username字段里面是否有相同的名称,如果有就提示,另外还要判断select * from pin的pin注册码字段里面是否有相同的,如果有则提示


        private void button1_Click(object sender, EventArgs e)
{
string name = textBox1.Text.Trim();
string pin = textBox2.Text.Trim();

MySqlConnectionStringBuilder sb = new MySqlConnectionStringBuilder();
sb.Server = "127.0.0.1";
sb.Port = 3306;
sb.Database = "tracesystem";
sb.UserID = "root";
sb.Password = "123456";
sb.CharacterSet = "gb2312";
MySqlConnection con = new MySqlConnection(sb.ConnectionString);
con.Open();
{
String query = "select * from user;select * from pin";//表一select * from user里面有个pin字段,表二select * from pin里面也有个PIN字段
MySqlCommand cmd = new MySqlCommand(query, con);
MySqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
string username = dr["username"].ToString();
string pin1 = dr["pin"].ToString();

string pin2 = dr.Table["pin"].ToString();//这里如何判断select * from pin 表的PIN字段内容
if (textBox1.Text == username)
{
MessageBox.Show("该用户已存在,请重新注册!");
return;
}
else if (textBox2.Text == pin1 | textBox2.Text != pin2)
{
MessageBox.Show("注册码不正确或已被使用,请重新输入,或联系管理:15307358087 获取!");
return;
}
}

string insert = "insert ignore into user(username,password,userlogin,jurisdiction,qq,phone,email,ip,logintime,locked,data,pin) values('" + name + "'," + "'" + password + "'," + "'" + userlogin + "'," + "'" + jurisdiction + "'," + "'" + qq + "'," + "'" + phone + "'," + "'" + email + "'," + "'" + ip + "'," + "'" + logintime + "'," + "'" + locked + "'," + "'" + data + "'," + "'" + pin + "')";
MySqlCommand cmd2 = new MySqlCommand(insert, con);
dr.Close();
cmd2.ExecuteNonQuery();
MessageBox.Show("注册成功!");
}
}

}
...全文
1091 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
lidaoying 2018-09-22
  • 打赏
  • 举报
回复
引用 18 楼 qq_43259670 的回复:
建议你上培训班。
不想上培训班的话,那就先找本好一点的完整的项目实战的书,而且带代代光盘的那种,把人家正常能运行的代码研究通了再来想自己的。

编程初期的“模仿”很重要,自己瞎摸索不切实际。
用你废话
abluer~ 2018-09-22
  • 打赏
  • 举报
回复
建议你上培训班。
不想上培训班的话,那就先找本好一点的完整的项目实战的书,而且带代代光盘的那种,把人家正常能运行的代码研究通了再来想自己的。

编程初期的“模仿”很重要,自己瞎摸索不切实际。
吉普赛的歌 2018-09-22
  • 打赏
  • 举报
回复
引用 16 楼 lidaoying 的回复:
[quote=引用 15 楼 yenange 的回复:] 建议你上培训班。 不想上培训班的话, 那就先找本好一点的完整的项目实战的书, 而且带代码光盘的那种, 把人家正常能运行的代码研究通了再来想自己的。 编程初期的“模仿”很重要, 自己瞎摸索不切实际。
那个问题已经解决了[/quote] 解决了, 应该先说明一下, 再问下一个问题。 把你的数据库(或者建表及数据导出为脚本), 项目文件放在 百度云盘 上共享出来。
lidaoying 2018-09-22
  • 打赏
  • 举报
回复
引用 15 楼 yenange 的回复:
建议你上培训班。
不想上培训班的话, 那就先找本好一点的完整的项目实战的书, 而且带代码光盘的那种, 把人家正常能运行的代码研究通了再来想自己的。

编程初期的“模仿”很重要, 自己瞎摸索不切实际。
那个问题已经解决了
吉普赛的歌 2018-09-22
  • 打赏
  • 举报
回复
建议你上培训班。 不想上培训班的话, 那就先找本好一点的完整的项目实战的书, 而且带代码光盘的那种, 把人家正常能运行的代码研究通了再来想自己的。 编程初期的“模仿”很重要, 自己瞎摸索不切实际。
lidaoying 2018-09-22
  • 打赏
  • 举报
回复
String query4 = "select * from x4type";//向数据库服务器发送指令
MySqlCommand cmd4 = new MySqlCommand(query4, con);
//执行结果赋值到dr,dr为只读
MySqlDataReader dr4 = cmd4.ExecuteReader();
if (dr4.HasRows)
{
comboBox4.Items.Clear();
while (dr4.Read())
{
comboBox4.Items.Add(dr4[1].ToString());
//comboBox4.SelectedIndex = 0;
}
}


数据表:A列 B列

1 A
2 B
C

以上代码把数据表用COMBOBOX读出来的数据会有一行是空白的,请问如何去除掉空白的第三行C
云天先生 2018-09-22
  • 打赏
  • 举报
回复
我要判断TEXTBOX1和数据库select * from user的username字段里面是否有相同的名称,如果有就提示,另外还要判断select * from pin的pin注册码字段里面是否有相同的,如果有则提示

string name = textBox1.Text.Trim();
string pin = textBox2.Text.Trim();

为什么不直接用数据库的命令来解决问题?
select * from user where username='name'
返回的数据存在,就说明有,如果是空就是没有,同样,pin也是一样的操作
number1killer 2018-09-22
  • 打赏
  • 举报
回复
引用 19 楼 lidaoying 的回复:
[quote=引用 18 楼 qq_43259670 的回复:]
建议你上培训班。
不想上培训班的话,那就先找本好一点的完整的项目实战的书,而且带代代光盘的那种,把人家正常能运行的代码研究通了再来想自己的。

编程初期的“模仿”很重要,自己瞎摸索不切实际。
用你废话[/quote]
怎么这么大的火气?
吉普赛的歌 2018-09-22
  • 打赏
  • 举报
回复
引用 10 楼 lidaoying 的回复:
引用 6 楼 elvisv 的回复:
另外,你这个用count(*)然后用ExecuteScalar()读数据是否为零来判断数据是否存在就好了吧,没有必要用ExecuteReader()和while
能直接上代码麽
我#7 不是贴出来了么? 有记录就是存在, 没记录就是不存在。
关炜 2018-09-22
  • 打赏
  • 举报
回复
谢谢分享,下来看看!
tuz898 2018-09-22
  • 打赏
  • 举报
回复
sb.CharacterSet = "gb2312";
改为
sb.CharacterSet = "utf8";
吉普赛的歌 2018-09-21
  • 打赏
  • 举报
回复
如果这个表, 有一亿行记录, 难道就得循环一亿次来判断? 把 sql 写规范一点, 分两次执行就好了。 弄一个 MySQLHelper https://blog.csdn.net/yenange/article/details/17911373 或者用 EF , 你的代码可以精简到几行。
select 1 from user where username = @username limit 1;
select 1 from pin where pin=@pin limit 1;
elvisv 2018-09-21
  • 打赏
  • 举报
回复
另外,你这个用count(*)然后用ExecuteScalar()读数据是否为零来判断数据是否存在就好了吧,没有必要用ExecuteReader()和while
elvisv 2018-09-21
  • 打赏
  • 举报
回复
NextResult()执行后就查询下一个结果集,然后你再判断下一个结果集中是否有数据,有数据就再while循环!
lidaoying 2018-09-21
  • 打赏
  • 举报
回复
引用 3 楼 elvisv 的回复:
dr.NextResult()
能再详细点吗
lidaoying 2018-09-21
  • 打赏
  • 举报
回复
引用 6 楼 elvisv 的回复:
另外,你这个用count(*)然后用ExecuteScalar()读数据是否为零来判断数据是否存在就好了吧,没有必要用ExecuteReader()和while
能直接上代码麽
lidaoying 2018-09-21
  • 打赏
  • 举报
回复
引用 8 楼 fsy_0104 的回复:
直接用where查,怎么能全查完在比?
请问怎么搞呢,苦恼
卿笑子不语 2018-09-21
  • 打赏
  • 举报
回复
直接用where查,怎么能全查完在比?
elvisv 2018-09-21
  • 打赏
  • 举报
回复
dr.NextResult()
lidaoying 2018-09-20
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
sb.CharacterSet = "gb2312";
改为
sb.CharacterSet = "utf8";
第二个表怎么判断呢
加载更多回复(1)

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧