JDBC(Java DataBase Connection):Java连接数据库技术
步骤:
1.下载对应版本的驱动包
2.在项目中引入mysql的数据库驱动包
3.开始编码[天龙八部]
4.使用Statement对象
5.使用PreparedStatement预编译对象
天龙八部:
1)装载驱动2)获得连接3)定义SQL4)获得编译对象[预编译对象/参数赋值]5)执行SQL6)处理结果7)关闭资源
查询数据库的数据(编译对象):
public static void selectData() {try {//1、装载驱动Class.forName("com.mysql.cj.jdbc.Driver");//2.定义连接urlString url="jdbc:mysql://localhost:3306/stus?serverTimezone=UTC&characterEncoding=utf-8";//3.定义账号和密码String user="root";String password="123456";//4.获得连接对象Connection con=DriverManager.getConnection(url, user, password);//5.定义sql语句String sql="select * from emp";//6.获得sql 语句的编译对象Statement st=con.createStatement();//7.编译并执行sql,如果是查询语句,则返回结果集ResultSet rs=st.executeQuery(sql);//如果结果集中有数据,则依次取出while(rs.next()) {int empno=rs.getInt("empno");String ename=rs.getString("ename");String job=rs.getString("job");System.out.println(empno+" "+ename+" "+job);}con.close();rs.close();con=null;rs=null;} catch (Exception e) {e.printStackTrace();}}
查询数据库的数据(预编译对象):
public static void selectData1(String userName,String userPwd) {try {//装载驱动Class.forName("com.mysql.cj.jdbc.Driver");//定义连接urlString url="jdbc:mysql://localhost:3306/stus?serverTimezone=UTC&characterEncoding=utf-8";//定义账号密码String user ="root";String password="123456";//获取连接对象Connection cn=DriverManager.getConnection(url, user, password);//定义sql语句String sql="select * from user where userName=? and userPwd=?";//获取预编译对象PreparedStatement ps=cn.prepareStatement(sql);//设置sql语句中参数的值ps.setString(1, userName);ps.setString(2, userPwd);//执行SQL语句ResultSet rs=ps.executeQuery();if(rs.next()) {System.out.println("查看表中有这个数据");}else {System.out.println("表中没有这个数据");}//关闭连接,释放资源cn.close();rs.close();cn=null;rs=null;} catch (Exception e) {e.printStackTrace();}}
修改数据库的数据(编译对象):
public static void updataData() {try {//装载驱动Class.forName("com.mysql.cj.jdbc.Driver");//定义连接urlString url="jdbc:mysql://localhost:3306/stus?serverTimezone=UTC&characterEncoding=utf-8";//定义账号密码String user="root";String password="123456";//获取连接对象Connection cn=DriverManager.getConnection(url, user, password);//定义sql语句String sql="update emp set sal=1000 where empno=7369";//获得sql的编译对象Statement st=cn.createStatement();//编译sql语句int t=st.executeUpdate(sql);if(t==1) {System.out.println("修改数据成功");}else {System.out.println("修改数据失败");}//关闭连接,释放资源cn.close();} catch (Exception e) {e.printStackTrace();}//}
修改数据库的数据(预编译对象):
public static void updataData1(String userPwd) {try {//装载驱动Class.forName("com.mysql.cj.jdbc.Driver");//定义连接urlString url="jdbc:mysql://localhost:3306/stus?serverTimezone=UTC&characterEncoding=utf-8";//定义账号密码String user="root";String password="123456";//获取连接对象Connection cn=DriverManager.getConnection(url, user, password);//定义sql语句String sql="update user set userPwd =? where userName='lisi'";//获取预编译对象PreparedStatement ps=cn.prepareStatement(sql);//设置sql语句中参数的值
// ps.setString(1, userName);ps.setString(1, userPwd);//执行sql语句int t=ps.executeUpdate();if(t==1) {System.out.println("更改数据成功");}else {System.out.println("更改数据失败");}//关闭连接,释放资源cn.close();cn=null;} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}};
向数据库里增加数据(编译对象):
public static void addData() {try {//装载驱动Class.forName("com.mysql.cj.jdbc.Driver");//定义连接urlString url="jdbc:mysql://localhost:3306/stus?serverTimezone=UTC&characterEncoding=utf-8";//定义账号和密码String user="root";String password="123456";//获取连接对象Connection cn=DriverManager.getConnection(url, user, password);//定义sql语句String sql="insert into emp values(6666,'xiaoxuhui','manager',null,'1996-10-15',15000,null,10)";//定义sql语句编译对象Statement st=cn.createStatement();//编译执行sql语句int t=st.executeUpdate(sql);if(t==1) {System.out.println("插入数据成功");}else {System.out.println("插入数据失败");}//关闭连接,释放资源cn.close();} catch (Exception e) {e.printStackTrace();}}
向数据库里增加数据(预编译对象):
public static void addData1(String userName,String userPwd) {try {//装载驱动Class.forName("com.mysql.cj.jdbc.Driver");//定义连接urlString url="jdbc:mysql://localhost:3306/stus?serverTimezone=UTC&characterEncoding=utf-8";//定义账号和密码String user="root";String password="123456";//获取连接对象Connection cn=DriverManager.getConnection(url, user, password);//定义sql语句String sql="insert into user(userName,userPwd) values(?,?)";//获取预编译对象PreparedStatement ps=cn.prepareStatement(sql);//设置SQL语句参数的值ps.setString(1, userName);ps.setString(2, userPwd);//执行sql语句int t=ps.executeUpdate();if(t==1) {System.out.println("插入数据成功");}else {System.out.println("插入数据失败");}//关闭连接,释放资源cn.close();cn=null;} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}
删除数据库的数据(编译对象):
public static void deleteData() {try {//装载驱动Class.forName("com.mysql.cj.jdbc.Driver");//定义连接urlString url="jdbc:mysql://localhost:3306/stus?serverTimezone=UTC&characterEncoding=utf-8";//定义账号和密码String user ="root";String password="123456";//获取连接对象Connection cn=DriverManager.getConnection(url, user, password);//定义sql语句String sql="delete from emp where empno=6666";//获取SQL语句的编译对象Statement st=cn.createStatement();//执行编译sql语句int t=st.executeUpdate(sql);if(t==1) {System.out.println("删除数据成功");}else {System.out.println("删除数据失败");}//关闭连接,释放资源cn.close();cn=null;} catch (Exception e) {e.printStackTrace();}}
删除数据库的数据(预编译对象):
public static void deleteData1(String userName,String userPwd) {try {//装载驱动Class.forName("com.mysql.cj.jdbc.Driver");//定义连接urlString url="jdbc:mysql://localhost:3306/stus?serverTimezone=UTC&characterEncoding=utf-8";//定义账号和密码String user="root";String password="123456";//获取连接对象Connection cn=DriverManager.getConnection(url, user, password);//定义sql语句String sql="delete from user where userName=?and userPwd=?";//获取预编译对象PreparedStatement ps=cn.prepareStatement(sql);//设置sql语句中参数的值ps.setString(1, userName);ps.setString(2, userPwd);//执行sql语句int t=ps.executeUpdate();if(t==1) {System.out.println("删除数据成功");}else {System.out.println("删除数据失败");}//关闭连接,释放资源cn.close();cn=null;} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}
单例模式
package com.cji.mydb;import java.sql.Connection;
import java.sql.DriverManager;/*** * 单例模式:类的单例* 类属性和成员属性的区别* @author Admin**/
public class DBUtil {//定义类属性// 懒汉模式private static DBUtil dbutil=null;//饿汉模式
// private static DBUtil dbutil=new DBUtil();private Connection con;//私有化本类的构造方法private DBUtil() {}//定义一个类方法返回本类的对象public static DBUtil getinstance() {if(dbutil==null) {dbutil=new DBUtil();}return dbutil;}//定义一个方法返回connection对象public Connection getconnection() throws Exception {if(con==null) {//1、装载驱动Class.forName("com.mysql.cj.jdbc.Driver");//2.定义连接urlString url="jdbc:mysql://localhost:3306/stus?serverTimezone=UTC&characterEncoding=utf-8";//3.定义账号和密码String user="root";String password="123456";//4.获得连接对象con=DriverManager.getConnection(url, user, password);}return con;}
}