1. 创建数据源——DataSouce
//1.创建数据源
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("06095213");//要和自己设定的数据库密码一致
2. 建立连接——Connection
Connection connection = dataSource.getConnection();
3. 拼装SQL——PreparedStatement
String sql = "insert into student values(?,?,?);";// ? 表示占位
//此处光是一个 String 类型的sql还不行,需要把这个String包装成一个“语句对象”
PreparedStatement statement = connection.prepareStatement(sql);
int id = scanner.nextInt();
String name = scanner.next();
int Class = scanner.nextInt();
//进行替换,下标从 1 开始
statement.setInt(1,id);
statement.setString(2,name);
statement.setInt(3,Class);
- ? 表示占位
- PreparedStatement不仅能将字符串风格的sql转成JDBC里面的对象,还能实现动态拼接
4. 执行SQL——executeUpdate()或者executeQuery ()
//返回值 ret 表示影响到了几行
int ret = statement.executeUpdate();
- 当SQL中使用的是insert,delete,update时,使用executeUpdate()方法
- 当SQL中使用select时,使用executeQuery ()方法
5. 释放资源——close()
statement.close();
connection.close();
注意:释放资源是由顺序的,先创建的后释放,后创建的先释放,就好比:打开冰箱,拉出抽屉,取出东西,然后推回抽屉,然后关上冰箱门。
代码实例——插入数据
public class TestJDBC {
public static void main(String[] args) throws SQLException {//处理getConnection()的异常
Scanner scanner = new Scanner(System.in);
//1.创建DataSource对象,描述数据库对象在哪里
DataSource dataSource = new MysqlDataSource();
//DataSource来自于JDBC带的接口
//MysqlDataSource 来自于刚才下载好的 mysql 的jar包,这里提供以一个具体实现 DataSource 的类。
//设置数据库所在的地址
((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");//(MysqlDataSource)dataSource属于向下转型,将父类的引用转换成子类
//设置数据库的用户名
((MysqlDataSource)dataSource).setUser("root");//root是mysql默认自带的管理员用户
//设置登录数据库的密码
((MysqlDataSource)dataSource).setPassword("06095213");
//2.让代码和数据库服务器建立链接
Connection connection = dataSource.getConnection();
//3.拼接SQL
int id = scanner.nextInt();
String name = scanner.next();
int Class = scanner.nextInt();
String sql = "insert into student values(?,?,?);";// ? 表示占位
//此处光是一个 String 类型的sql还不行,需要把这个String包装成一个“语句对象”
PreparedStatement statement = connection.prepareStatement(sql);
//PreparedStatement不仅能将字符串风格的sql转成JDBC里面的对象,还能实现动态拼接
//进行替换,下标从 1 开始
statement.setInt(1,id);
statement.setString(2,name);
statement.setInt(3,Class);
System.out.println("statement:"+statement);
//4.执行 SQL
//SQL 当中如果使用 insert update delete ,都使用 executeUpdate() 方法
//SQL 当中如果是select,则使用 executeQuery ()方法;
//返回值 ret 表示影响到了几行
int ret = statement.executeUpdate();
System.out.println(ret);
//5.执行完SQL后,释放资源
//注意:释放资源是有顺序的,先创建的后释放,后创建的先释放——————就好比:打开冰箱,拉开抽屉
statement.close();
connection.close();
}
}
代码示例——删除数据
public class TestJDBCDelete {
public static void main(String[] args) throws SQLException {
//删除数据库中的记录
//让用户输入一个 id,根据id来删除
//1.建立dataSource对象,描述数据库对象
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("06095213");
//2.建立链接
Connection connection = dataSource.getConnection();
//3.拼装sql
String sql = "delete from student where id=?";
PreparedStatement statement = connection.prepareStatement(sql);
Scanner scanner = new Scanner(System.in);
int id= scanner.nextInt();
statement.setInt(1,id);
System.out.println("statement"+statement);
//4.执行sql
int ret = statement.executeUpdate();
System.out.println(ret);
//5.关闭资源
statement.close();
connection.close();
}
}