最基本连接mysql数据库。
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
try {
//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获取连接
conn = DriverManager.getConnection("jdbc:mysql://172.12.12.12:3306/test?user=root&password=root");
//3.获取传输器
stat = conn.createStatement();
//4.利用传输器,发送sql,返回结果
String sql = "insert into account value(null,'张飞',888)";
int rows = stat.executeUpdate(sql);
//5.处理结果
System.out.println("影响了"+rows+"行");
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException();
}finally{
//6.释放资源
if(rs!=null){
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}finally{
rs = null;
}
}
if(stat!=null){
try {
stat.close();
} catch (Exception e) {
e.printStackTrace();
}finally{
stat = null;
}
}
if(conn!=null){
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}finally{
conn = null;
}
}
}
-
注册数据库驱动
使用DriverManager.registerDriver(new Driver());注册数据库有两个缺点,首先,通过观察mysql的中Driver接口的实现类发现在静态代码块中注册驱动的逻辑,所以这种方式会造成驱动被注册两次。另外,这种方式导致了程序和具体的数据库驱动绑死在了一起,程序的灵活性比较低。
所以推荐使用:Class.forName(“com.mysql.jdbc.Driver”);的方式注册数据库驱动。 -
获取数据库连接
Connection conn = DriverManager.getConnection(url,name,psw); -
数据库URL
URL用于标识数据库的位置,程序员通过URL地址告诉JDBC程序连接哪个数据库,URL的写法为: jdbc:mysql://localhost:3306/test?参数名=参数值 (test->数据库名) -
Connection
Jdbc程序中的Connection,它用于代表数据库的链接,Connection是数据库编程中最重要的一个对象,客户端与数据库所有交互都是通过connection对象完成的,这个对象的常用方法:createStatement():创建向数据库发送sql的statement对象。
prepareStatement(sql):创建向数据库发送预编译sql的PreparedSatement对象。
prepareCall(sql):创建执行存储过程的callableStatement对象。
setAutoCommit(boolean autoCommit):设置事务是否自动提交。
commit():在链接上提交事务。
rollback():在此链接上回滚事务。 -
Statement(防止注入式攻击,PreparedSatement)
Jdbc程序中的Statement对象用于向数据库发送SQL语句, Statement对象常用方法:executeQuery(String sql) :用于向数据库发送查询语句。
executeUpdate(String sql):用于向数据库发送insert、update或delete语句
execute(String sql):用于向数据库发送任意sql语句
addBatch(String sql):把多条sql语句放到一个批处理中。
executeBatch():向数据库发送一批sql语句执行。 -
ResultSet
Jdbc程序中的ResultSet用于代表Sql语句的执行结果。Resultset封装执行结果时,采用的类似于表格的方式。ResultSet 对象维护了一个指向表格数据行的游标,初始的时候,游标在第一行之前,调用ResultSet.next() 方法,可以使游标指向具体的数据行,进行调用方法获取该行的数据。
ResultSet既然用于封装执行结果的,所以该对象提供的都是用于获取数据的get方法:获取任意类型的数据
getObject(int index)
getObject(string columnName)
获取指定类型的数据,例如:
getString(int index)
getString(String columnName)
getInt(columnIndex)
getInt(columnLabel)
getDouble(columnIndex)
getDouble(columnLabel)
…
操作游标的方法,例如:
next():移动到下一行
Previous():移动到前一行
absolute(int row):移动到指定行
beforeFirst():移动resultSet的最前面。
afterLast() :移动到resultSet的最后面。
… -
释放资源
Jdbc程序运行完后,切记要释放程序在运行过程中,创建的那些与数据库进行交互的对象,这些对象通常是ResultSet, Statement和Connection对象。
特别是Connection对象,它是非常稀有的资源,用完后必须马上释放,如果Connection不能及时、正确的关闭,极易导致系统宕机。Connection的使用原则是尽量晚创建,尽量早的释放。
为确保资源释放代码能运行,资源释放代码也一定要放在finally语句中。