一、JDBC
JDBC编写六步走:
1、注册驱动,告诉java程序我们要链接什么数据库
【mysql为案例】
5.1.x驱动包中的驱动类路径:【com.mysql.jdbc.Driver】
8.x.x驱动包中的驱动类路径:【com.mysql.cj.jdbc.Driver】
2、创建与数据库的链接对象
3、创建操作数据库对象
4、操作数据库对象调用方法执行sql语句,操作数据库
5、如果第4步是查询操作的话,需要进一步分析查询结果
6、释放资源,关闭与数据库的链接
代码案例:
public class JDBCDemo1 {
public static void main(String[] args) throws Exception {
// 注册驱动,告诉java程序我们要链接什么数据库
Class.forName("com.mysql.jdbc.Driver");
// 创建与数据库的链接对象
// public static Connection getConnection(String url,String user, String password)
/**
* url: 超链接
* jdbc:mysql://192.168.6.101:3306/bigdata?characterEncoding=UTF-8&useUnicode=True&useSSL=false
* username: root
* password: 123456
*/
String url = "jdbc:mysql://192.168.233.101:3306/bigdata?characterEncoding=UTF-8&useUnicode=True&useSSL=false";
String username = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, username, password);
System.out.println("成功获取与mysql数据库的链接对象:" + conn);
// 创建操作数据库对象
Statement state = conn.createStatement();
// 操作数据库对象调用方法执行sql语句,操作数据库
// SQL - 结构化查询语言 只要是结构化数据库,基本都可以使用sql语句【mysql是其中一种】
// 增删改,其它的操作
// 增加
// int i = state.executeUpdate("insert into students values(1007,'李刚2',18,'男','文科一班')");
// if(i==1){
// System.out.println("插入数据成功!");
// }else {
// System.out.println("插入数据失败!");
// }
// 删除
// state.executeUpdate("delete from students where id=1007");
// 修改
// state.executeUpdate("update students set name='江川' where id=1006");
// DQL 查询
ResultSet resultSet = state.executeQuery("select t1.location as location,count(1) as counts from (select location from jd_comment where productColor='墨玉青') t1 group by t1.location order by counts desc limit 10");
// resultSet.next();
// String location = resultSet.getString(1);
// String counts = resultSet.getString(2);
// System.out.println(location+": "+counts);
while (resultSet.next()){
//根据列索引获取元素,从左向右从1开始
// String location = resultSet.getString(1);
// String counts = resultSet.getString(2);
// 根据列名获取
String location = resultSet.getString("location");
String counts = resultSet.getString("counts");
System.out.println(location+": "+counts);
}
// 释放资源,关闭与数据库的链接
state.close();
conn.close();
}
}
二、登录注册修改案例
用户类存储用户的用户名和密码
public class User {
private String name;
private String pwd;
public User() {
}
public User(String name, String pwd) {
this.name = name;
this.pwd = pwd;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", pwd='" + pwd + '\'' +
'}';
}
}
MySQL配置文件
url=jdbc:mysql://192.168.6.101:3306/bigdata?characterEncoding=UTF-8&useUnicode=True&useSSL=false
username=root
password=123456
MySQL连接工具类【获取MySQL连接对象】
import java.io.BufferedReader;
import java.io.FileReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;
public class MySQLTool {
private static Properties prop;
private static Connection conn;
private MySQLTool(){}
public static Connection getConnection(){
try {
//创建Properties对象
prop = new Properties();
prop.load(new BufferedReader(new FileReader("D:\\projects\\ideaprojects\\bigdata\\src\\com\\wll\\day17\\mysql.properties")));
String url = prop.getProperty("url");
String username = prop.getProperty("username");
String password = prop.getProperty("password");
// 注册驱动,告诉java程序我们要链接什么数据库
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, username, password);
}catch (Exception e){
e.printStackTrace();
}
return conn;
}
}
测试类
import com.wll.day17.entity.User;
import com.wll.day17.utils.MySQLTool;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class IODemo1 {
public static void init() {
Scanner sc = new Scanner(System.in);
System.out.println("========欢迎光临^_^========");
System.out.println("----------------------------------");
System.out.print("选择您要做的操作:1:登录,2:注册,3:修改密码:");
int i = sc.nextInt();
switch (i) {
case 1:
login();
break;
case 2:
register();
break;
case 3:
update();
}
}
public static void update(){
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名:");
String name = sc.nextLine();
if(!isUserExistWithName(name)){
System.out.println("用户不存在,请注册");
return;
}
System.out.println("请输入旧密码");
String oldPassword = sc.nextLine();
User user = getUserWithNameAndPassword(name,oldPassword);
if (user!=null){
System.out.println("请输入新密码:");
String newPassword = sc.nextLine();
updateUser(name,newPassword);
}else {
System.out.println("输入的密码不对!!");
}
}
public static void updateUser(String name,String newPassword){
Connection conn = null;
Statement state = null;
try {
conn = MySQLTool.getConnection();
state = conn.createStatement();
int i = state.executeUpdate("update users set password ='" + newPassword + "' where name='" + name + "'");
if (i==1) {
System.out.println("密码修改成功!!");
}else{
System.out.println("密码修改失败!!");
}
} catch (SQLException e) {
throw new RuntimeException(e);
} finally {
if (state != null) {
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
public static void register(){
Scanner sc = new Scanner(System.in);
System.out.print("请输入用户名:");
String name = sc.nextLine();
if (isUserExistWithName(name)){
System.out.println("用户已存在");
return;
}
System.out.print("请输入密码:");
String password = sc.nextLine();
saveUser(name,password);
}
public static void saveUser(String name,String pwd){
Connection conn = null;
Statement statement = null;
try {
conn = MySQLTool.getConnection();
statement = conn.createStatement();
int id = 0;
ResultSet resultSet = statement.executeQuery("select max(id) from users");
while (resultSet.next()) {
if(resultSet.getString(1)!=null){
id = Integer.parseInt(resultSet.getString(1)) + 1;
}
else {
id=1;
}
}
String sql = "insert into users values(" + id + ",'" + name + "','" + pwd + "')";
int i = statement.executeUpdate(sql);
if (i == 1) {
System.out.println("用户保存成功!!");
} else {
System.out.println("用户保存失败!!");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
public static void login() {
Scanner sc = new Scanner(System.in);
System.out.println("------------------>正在进行登录操作");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.print("请输入用户名:");
String name = sc.nextLine();
if (!isUserExistWithName(name)) {
System.out.println("用户不存在,请注册用户");
return;
}
System.out.print("请输入密码:");
String password = sc.nextLine();
User user = getUserWithNameAndPassword(name, password);
if (user!=null){
System.out.println("登录成功");
}else {
System.out.println("您输入的密码不对");
}
}
public static User getUserWithNameAndPassword(String name, String password) {
Connection conn = null;
Statement state = null;
User user = null;
try {
conn = MySQLTool.getConnection();
state = conn.createStatement();
ResultSet resultSet = state.executeQuery("select name,password from users where name='" + name + "' and password='" + password + "'");
while (resultSet.next()) {
String userName = resultSet.getNString(1);
String pwd = resultSet.getNString(2);
user=new User(userName,pwd);
}
} catch (SQLException e) {
throw new RuntimeException(e);
} finally {
if (state != null) {
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return user;
}
public static Boolean isUserExistWithName(String name) {
Connection conn = null;
Statement state = null;
boolean flag = false;
try {
conn = MySQLTool.getConnection();
state = conn.createStatement();
ResultSet resultSet = state.executeQuery("select name from users where name='" + name + "'");
while (resultSet.next()) {
flag = true;
}
} catch (SQLException e) {
throw new RuntimeException(e);
} finally {
if (state != null) {
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return flag;
}
public static void main(String[] args) {
init();
}
}
标签:JDBC,java,String,System,day17,out,public,conn,name
From: https://www.cnblogs.com/w-ll/p/18475485