第一个JDBC程序
步骤总结:
1.加载驱动
2.连接数据库DriverManager
3.获得执行sql的对象statement
4.获得返回的结果集
5.释放连接
public class JdbcFirstDemo {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1.加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2.用户信息和url
String url = "jdbc:mysql://localhost:3306/school?serverTimezone=UTC";
String username = "root";
String password = "123456";
//3.连接成功,数据库对象 Connection 代表数据库
Connection connection = DriverManager.getConnection(url, username, password);
//4.执行SQL对象 statement执行sql的对象
Statement statement = connection.createStatement();
//5.执行SQL的对象 去执行SQL,可能存在结果,查看返回结果
String sql = "select*from testmd5";
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()){
System.out.println("id:"+resultSet.getObject("id"));
System.out.println("name:"+resultSet.getObject("name"));
System.out.println("pwd:"+resultSet.getObject("pwd"));
}
//6.释放连接
resultSet.close();
statement.close();
connection.close();
}
}
JDBC对象解释
DriverManager
//DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver()); //加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");//固定写法,加载驱动
Connection connection = DriverManager.getConnection(url, username, password);
// connection代表数据库,所以可以设置事务的相关操作(提交,回滚,自动提交设置)
connection.setAutoCommit();//设置事务是否自动提交
connection.commit();//事务提交
connection.rollback();//事务回滚
注意第一个加载驱动的方式最好不用,因为该方式相当于加载了两次驱动(看Driver类的源码)
URL
String url = "jdbc:mysql://localhost:3306/school?serverTimezone=UTC";
//mysql 默认端口号3306
//协议://主机名:端口号/数据库名?参数1&&参数2
//oracle 默认端口号 1521
//jdbc:oracle:thin:@localhost:1521:sid
Statement执行SQL的对象 PreparedStatement执行SQL的对象
String sql = "select * from testmd5";//编写SQL
statement.executeQuery(sql);//查询操作,返回ResultSet
statement.execute(sql);//执行任何sql,有判断过程,效率低
statement.executeUpdate(sql);//更新,插入,删除都是用这个,返回一个受影响的行数
ResultSet查询的结果集:封装了所有的查询结果
获得指定的数据类型
resultSet.getObject();//在不知道列类型的情况下使用
resultSet.getString();//如果知道列的类型就使用指定的类型
resultSet.getInt();
resultSet.getFloat();
resultSet.getDate();
resultSet.getBoolean();
......
遍历、指针
resultSet.beforeFirst();//移动到最前面
resultSet.afterLast();//移动到最后面
resultSet.next();//移动到下一个数据
resultSet.previous();//移动到前一行
resultSet.absolute(int row);//移动到指定行
释放资源
//释放连接,这些对象很耗资源,用完关闭!
resultSet.close();
statement.close();
connection.close();