- 1.map中有如下数据(用户名=密码)
[liuyan=123456,wangbaoqiang=123321,fangbian=abcd,miejueshitai=123abc321]
在ip为127.0.0.1数据库名为stdb,连接数据库的用户名和密码为:admin和123456中有一个userinfo表相关字段为(id,username,password)
(1)将map中的手机号码取出来打印到控制台上
* 直接使用map集合的keySet()方法获取所有的key组成的Set集合,并遍历
(2)判断map中所有的用户名在userinfo表中是否存在存在则输出"该用户已注册",如果不存在将该用户名及对应的密码存入到userinfo表中
(map中的数据不需要修改)
* 连接到数据库
* 创建表
drop database stdb;
create database stdb;
use stdb;
create table userinfo(
id int(10) primary key auto_increment,
username varchar(200),
password varchar(200)
);
- JDBC封装类在这里 https://blog.csdn.net/alexzt/article/details/80268297
package exrcise;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.HashMap;
import java.util.Set;
import demo1.JDBCutilDemo1;
public class test1 {
public static void main(String[] args) throws Exception {
HashMap<String, String> map = new HashMap<>();
map.put("liuyan", "123456");
map.put("wangbaoqiang", "123321");
map.put("fangbian", "abcd");
map.put("miejueshitai", "123abc321");
map.put("alex", "alexpass");
Set<String> set = map.keySet();
for (String key : set) {
System.out.println(key + "=" + map.get(key));
boolean b = isExists(key);
if(!b) {
//将用户加入数据库
int row = insert(key, map.get(key));
System.out.println("成功插入" + row + "行");
}else {
System.out.println("用户名" + key + "已注册!");
}
}
}
private static int insert(String key, String value) throws Exception {
Connection conn = JDBCutilDemo1.getConn();
int row = 0;
String sql = "insert into userinfo(username,password) values(?,?)";
PreparedStatement prestat = conn.prepareStatement(sql);
prestat.setString(1, key);
prestat.setString(2, value);
row = prestat.executeUpdate();
return row;
}
private static boolean isExists(String key) throws Exception {
Connection conn = JDBCutilDemo1.getConn();
String sql = "SELECT * FROM userinfo where username=?";
PreparedStatement prestat = conn.prepareStatement(sql);
prestat.setString(1, key);
ResultSet set = prestat.executeQuery();
if(set.next()) {
return true;
}else {
return false;
}
}
}
- 2一个数据库stdb,用户名为admin 密码为123456 已存在一个表student中有五个学生的信息,姓名,性别,年龄,分数.
id(varchar(20)) name(varchar(20)) sex(varchar(20)) score(int(10))
1 李少荣 女 80
2 邵凯 男 75
3 周强 男 95
4 王晓婷 女 55
5 张秀花 女 68
6 顾会 女 50
7 赵天一 男 32
(1)查询女性,成绩80以上的学生数量
(2)将姓张的男同学的的成绩改为100
(3)查询成绩大于60的女性,显示姓名,性别,成绩
(4)分别统计所有男同学的平均分,所有女同学的平均分及总平均分
(5)按照分数从小到大的顺序打印分数大于总平均分的学员信息(id-name-sex-score),并将分数大于总平均分的学员信息(按照分数从小到大的顺序)(id-name-sex-score)写入到studentInfo.txt文件中(写入格式:id-name-sex-score)
(6)定义查询所有学生的方法public List<Student> getAllStudent(){}
(7)定义根据id查询学生的方法public Student getStudentById(String id){}
(8)定义根据id删除学生的方法public int deleteStudentById(String id){}//注意只有数据库中有才能删除,没有无法删除
(9)定义添加学员的方法public int addStudent(){}//注意只有数据库中没有有才能添加,有无法添加
(10)定义根据id修改学员的信息public int updateStudentById(String id){}//注意只有数据库中有才能修改,没有无法修改
package exrcise;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import demo1.JDBCutilDemo1;
public class Test2 {
private static Connection conn;
static{
try {
conn = JDBCutilDemo1.getConn();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
/*
* mysql> create table student(
-> id int primary key auto_increment,
-> name varchar(20),
-> sex varchar(20),
-> score int(20));
*
*/
//插入数据
// insert("李少荣", "女", 80);
// insert("邵凯", "男", 75);
// insert("周强", "男", 95);
// insert("王晓婷", "女", 55);
// insert("张秀花", "女", 68);
// insert("顾会", "女", 50);
// insert("赵天一", "男", 32);
// // (1)查询女性,成绩80以上的学生数量
// int count = fun1();
// System.out.println("查询女性,成绩80以上的学生数量:" + count);
// // (2)将姓张的男同学的的成绩改为100
// int count1 = fun2();
// System.out.println("将姓张的男同学的的成绩改为100,成功update-" + count1 + "-行.");
// // (3)查询成绩大于60的女性,显示姓名,性别,成绩
// fun3();
// // (4)分别统计所有男同学的平均分,所有女同学的平均分及总平均分
// fun4("男");
// fun4("女");
// //(5)按照分数从小到大的顺序打印分数大于总平均分的学员信息(id-name-sex-score),
// //并将分数大于总平均分的学员信息(按照分数从小到大的顺序)(id-name-sex-score)写入到studentInfo.txt文件中(写入格式:id-name-sex-score)
// fun5();
// // (6)定义查询所有学生的方法public List<Student> getAllStudent(){}
// List<Student> list = getAllStudent();
// //遍历列表
// for (Student student : list) {
// System.out.println(student.toString());
// }
// // (7)定义根据id查询学生的方法public Student getStudentById(String id){}
// Student stu = getStudentById(1);
// System.out.println(stu.toString());
// // (8)定义根据id删除学生的方法public int deleteStudentById(String id){}//注意只有数据库中有才能删除,没有无法删除
// int drow = deleteStudentById(1);
// System.out.println("影响" + drow + "条数据!");
// // (9)定义添加学员的方法public int addStudent(){}//注意只有数据库中没有有才能添加,有无法添加
// int addRow = addStudent("testadd", "男", 100);
// System.out.println("影响" + addRow + "条数据!");
// // (10)定义根据id修改学员的信息public int updateStudentById(String id){}//注意只有数据库中有才能修改,没有无法修改
// int updateRow = updateStudentById(2, 100);
// System.out.println("影响" + updateRow + "条数据!");
}
private static int updateStudentById(int sid, int score) throws Exception {
int updateRow = 0;
Student stu = getStudentById(sid);
if(stu==null) {
System.out.println("ID为" + sid + "的用户不存在!");
}else {
//修改
String sql = "update student set score=? where id=?";
PreparedStatement prestat = conn.prepareStatement(sql);
prestat.setInt(1, score);
prestat.setInt(2, sid);
updateRow = prestat.executeUpdate();
}
return updateRow;
}
private static int addStudent(String name, String sex, int score) throws Exception {
int addRow = 0;
Student stu = getStudentByName(name);
if(stu != null) {
System.out.println("用户:"+name+"已存在!");
}else {
addRow = insert(name, sex, score);
}
return addRow;
}
private static Student getStudentByName(String sname) throws Exception {
Student stu = null;
String sql = "select * from student where name=?";
PreparedStatement prestat = conn.prepareStatement(sql);
prestat.setString(1, sname);
ResultSet set = prestat.executeQuery();
if(set.next()) {
int id = set.getInt("id");
String name = set.getString("name");
String sex = set.getString("name");
int score = set.getInt("id");
stu = new Student(id, name, sex, score);
}
return stu;
}
private static int deleteStudentById(int sid) throws Exception {
int drow = 0;
//查询是否存在
Student stu = getStudentById(sid);
if(stu==null) {
System.out.println("ID为" + sid + "的用户不存在!");
}else {
//删除目标
String sql = "delete from student where id=?";
PreparedStatement prestat = conn.prepareStatement(sql);
prestat.setInt(1, sid);
drow = prestat.executeUpdate();
}
return drow;
}
private static Student getStudentById(int sid) throws Exception {
Student stu = null;
String sql = "select * from student where id=?";
PreparedStatement prestat = conn.prepareStatement(sql);
prestat.setInt(1, sid);
ResultSet set = prestat.executeQuery();
if(set.next()) {
int id = set.getInt("id");
String name = set.getString("name");
String sex = set.getString("name");
int score = set.getInt("id");
stu = new Student(id, name, sex, score);
}
return stu;
}
private static List<Student> getAllStudent() throws Exception {
List<Student> list = new ArrayList<>();
String sql = "select * from student";
PreparedStatement prestat = conn.prepareStatement(sql);
ResultSet set = prestat.executeQuery();
while(set.next()) {
list.add(new Student(set.getInt("id"), set.getString("name"), set.getString("sex"), set.getInt("score")));
}
return list;
}
private static void fun5() throws Exception {
String sql = "select * from student where score>(select avg(score)from student) order by score";
PreparedStatement prestat = conn.prepareStatement(sql);
ResultSet set = prestat.executeQuery();
BufferedWriter out = null;
while(set.next()) {
String str = set.getInt("id")+"-"+set.getString("name")+"-"+set.getString("sex")+"-"+set.getInt("score");
System.out.println(str);
//写入文件
out = new BufferedWriter(new FileWriter(new File("/home/alex/studentInfo.txt"), true));
out.write(str);
out.newLine();
out.flush();
}
out.close();
}
private static void fun4(String sex) throws Exception {
//用PreparedStatement sql中的占位符不需要用单引号抱起来。
String sql = "select avg(score) as avg from student where sex=?";
PreparedStatement prestat = conn.prepareStatement(sql);
prestat.setString(1, sex);
ResultSet set = prestat.executeQuery();
while(set.next()) {
System.out.println("性别-"+sex + "-的平均成绩是:"+ set.getInt("avg"));
}
prestat.close();
}
private static void fun3() throws Exception {
String sql = "select name,sex,score from student where sex='女'";
PreparedStatement prestat = conn.prepareStatement(sql);
ResultSet set = prestat.executeQuery();
while(set.next()) {
String name = set.getString("name");
String sex = set.getString("sex");
int score = set.getInt("score");
System.out.println("name:"+name+"_"+"sex:"+sex+"_"+"score:"+score);
}
prestat.close();
}
private static int fun2() throws Exception {
String sql = "update student set score=100 where name like '张%'";
PreparedStatement prestat = conn.prepareStatement(sql);
int count = prestat.executeUpdate();
prestat.close();
return count;
}
private static int insert(String name, String sex, int score) throws Exception {
String sql = "insert into student(name,sex,score) values(?,?,?)";
PreparedStatement prestat = conn.prepareStatement(sql);
prestat.setString(1, name);
prestat.setString(2, sex);
prestat.setInt(3, score);
int count = prestat.executeUpdate();
prestat.close();
return count;
}
private static int fun1() throws Exception {
int count = 0;
String sql = "select count(*) as count from student where score>80 and sex='女'";
PreparedStatement prestat = conn.prepareStatement(sql);
ResultSet set = prestat.executeQuery();
while(set.next()) {
count = set.getInt("count");
}
prestat.close();
return count;
}
}
class Student{
private int id;
private String name;
private String sex;
private int score;
public Student() {}
public Student(int id, String name, String sex, int score) {
this.id = id;
this.name = name;
this.sex = sex;
this.score = score;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", sex=" + sex + ", score=" + score + "]";
}
}