JDBC(Java Data Base Connectivity) 是 Java 访问数据库的标准规范,程序员使用统一的代码,便可以访问到不同的数据库。
public class jdbc {
public static void main(String[] args) throws Exception{
// 1.注册驱动(可以省略从jdbc3开始)
Class.forName("com.mysql.jdbc.Driver");
// 2.获取连接 connection连接对象
String url="jdbc:mysql://localhost:3306/db1?characterEncoding=UTF-8";
Connection connection=DriverManager.getConnection(url,"root","root");
// 3.获取语句执行平台 Statement
Statement statement=connection.createStatement();
//4.传入需要执行的sql语句
String sql="select * from user ";
//(ResultSet是结果集对象,只有查询的时候会使用到)
ResultSet resultSet=statement.executeQuery(sql);
// 处理结果集对象 用resultSet
//while循环,遍历获取resultSet中的数据
while (resultSet.next()){
int id= resultSet.getInt("id");
String name= resultSet.getString("name");
System.out.println(id+name);
}
//关闭流,先开启的后关闭,跟栈的操作机制是一样的
resultSet.close();
statement.close();
con.close();
}
}
JDBC工具类(JDBCUtils)
import java.sql.*;
import static java.lang.Class.forName;
public class JDBCUtils {
// 1.将连接信息定义为 字符串常量
public static final String DRIVERNAME = "com.mysql.jdbc.Driver";
public static final String URL = "jdbc:mysql://localhost:3306/db1?characterEncoding=utf-8";
public static final String User = "root";
public static final String PASSWORD = "root";
// 2.静态代码块(静态代码块是一定可以执行的)(注册驱动是可以省略的因此该代码块理论上来说是可以省略的)
static {
try {
// 注册驱动
Class.forName(DRIVERNAME);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//3.获取连接的静态方法
public static Connection getConnection(){
try {
//获取连接对象并返回
Connection connection = DriverManager.getConnection(URL, User, PASSWORD);
return connection;
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
//关闭资源的方法(重载方法,执行查询操作的时候关闭的内容需要多一个流)
public static void close(Connection connection, Statement statement){
if(connection !=null && statement !=null ){
try{
statement.close();
connection.close();
}catch (SQLException e){
e.printStackTrace();
}
}
}
public static void close(ResultSet resultSet,Connection connection, Statement statement){
if(connection !=null && statement !=null && resultSet !=null ){
try{
resultSet.close();
statement.close();
connection.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
}
通过JDBCUtils登录数据库
public class Test03 {
public static void main(String[] args) throws SQLException {
//获取连接
Connection connection= JDBCUtils.getConnection();
// 使用?占位符的方式来设置参数
String sql="select * from user where name=? and password=?";
PreparedStatement preparedStatement=connection.prepareStatement(sql);
//3.获取用户输入的用户名和密码
Scanner sc=new Scanner(System.in);
System.out.println("请输入用户名:");
String name=sc.nextLine();
System.out.println("请输入密码:");
String pass=sc.next();
// 4.设置参数 使用setXXX(占位符的位置(整数),要设置的值)的方法设置占位符的参数
preparedStatement.setString(1,name); //设置第一个问号值为name
preparedStatement.setString(2,pass); //设置第二个问号值为pass
// 5.执行查询
ResultSet resultSet=preparedStatement.executeQuery();
if(resultSet.next()){
System.out.println("登录成功"+name);
}else{
System.out.println("登陆失败!");
}
// 6.关闭流操作(注意执行查询操作当中关闭流的时候多一个参数resultSet)
JDBCUtils.close(connection,preparedStatement,resultSet);
}
}
通过JDBCUtils向数据库中插入数据
public class Test04 {
public static void main(String[] args) throws SQLException {
//获取连接
Connection connection = JDBCUtils.getConnection();
// 使用?占位符的方式来设置参数
String sql="insert into user values (?,?);";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
Scanner sc=new Scanner(System.in);
System.out.println("请输入用户名:");
String name=sc.nextLine();
System.out.println("请输入密码:");
String pass=sc.next();
//设置参数 使用setXXX(占位符的位置(整数),要设置的值)的方法设置占位符的参数
preparedStatement.setString(1, name);
preparedStatement.setString(2, pass);
// 执行插入
System.out.println(sql);
// 更新数据
preparedStatement.executeUpdate();
System.out.println("插入成功!");
//关闭流
JDBCUtils.close(connection,preparedStatement);
}
}
git工作区,暂存区,版本库之间的关系: 我们建立的项目文件夹就是工作区,在初...
今日国内领先的智能数据服务运营商觉非科技完成近亿元A轮融资。本轮融资由和高资...
从功能测试、性能测试、界面测试、安全性测试、易用性、兼容性测试、震动测试七...
我们知道微软将会在今年给Windows10更换全新设计的UI,让Windows10的界面更加整...
一、MVC MVC模式的意思是,软件可以分成三个部分。 视图(View):用户界面。 控...
前言 关于Window,你了解多少呢?看看下面这些问题你都能答上来吗。 如果你遇到这...
一、简介 本设计为硬币图像识别统计装置通过数码相机获取平铺无重叠堆积的硬币的...
大家好,今天我们来简单的聊一聊缓存问题。什么是缓存呢?它在系统设计中是在一个...
首先给扑克牌中每张牌设定一个编号,下面算法实现的编号规则如下: u 红桃按照从...
本文实例讲述了jsp中page指令用法。分享给大家供大家参考。具体如下: 一、JSP ...