package datebase;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
public class Demo02 {
/*map中有如下数据(电话号=套餐价格)
[13265477888=168,15241698745=11,13699989898=20,1898686666=120]
在ip为127.0.0.1数据库名为stdb,连接数据库的用户名和密码为:admin和123456中有一个numinfo表相关字段为(id,iphonenum,tomoney)(15分)
(1)将map中的手机号码取出来打印到控制台上(3分)
(2)判断map中所有的手机号在numinfo表中是否存在存在则输出"该主机已登录"如果不存在将该号码及对应的套餐价格存入到numinfo表中.(12分)*/
public static void main(String[] args) throws SQLException, ClassNotFoundException {
//思路:拿着map中的电话号码,作为条件,传入到查询语句中,看看map中的电话号码在数据库中是否存在
//如果能查出来,输出该主机已登录
//如果不能查出来,则进行插入操作
Map<String,Integer> map = new HashMap<String, Integer>();
map.put("13265477888", 168);
map.put("15241698745", 11);
map.put("13699989898", 20);
map.put("1898686666", 120);
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/gjp";
// 查询操作
Connection conn = DriverManager.getConnection(url, "root", "root");
String sql = "select * from numinfo where iphonenum = ?";
PreparedStatement ps = conn.prepareStatement(sql);
//插入操作
String sql2 = "insert into numinfo (iphonenum,tomoney) values (?,?)";
PreparedStatement ps2 = conn.prepareStatement(sql2);
//遍历Map的原因:我们要拿着map中的每一条数据到数据库中去查询,看这些数据在数据库中存在不存在,所以要得到map的每一条数据
for(Map.Entry<String, Integer> entry:map.entrySet()){
String key = entry.getKey(); //遍历出来的key
Integer value = entry.getValue(); //遍历出来的value
System.out.println( key+ " = " +value);
ps.setString(1, key); // 将key作为条件传入第一个sql语句中去查询看看数据是否存在,如果返回的结果集为true ,表示有数据
// 有数据则提醒主机已登录
ResultSet rs = ps.executeQuery();
if(rs.next()){
System.out.println("这个主机已登录");
}else{
System.out.println("这个套餐不存在");
//如果不存在,则执行第二条sql
ps2.setString(1, key);
ps2.setInt(2, value);
int executeUpdate = ps2.executeUpdate();
if(executeUpdate > 0){
System.out.println("已保存");
}
}
}
}
}
|
|