查看DriverManager.registerDriver(new Driver());的源代码发现:数据库驱动注册了两次。
代码优化:
可以使用Class.forname(“com.mysql.jdbc.Driver”);来注册数据库驱动
Class.forName是一个静态方法,同样可以用来加载类。
而在加载类的时候就会执行类中的static静态代码块,也就相当于实现了数据库驱动的注册。
【
Oracle的URL:jdbc:oracle:thin:@localhost:3306:jdbcDemo
MySql的URL:jdbc:mysql://localhost:3306/jdbcDemo
MySql的URL简写方式:jdbc:mysql:///jdbcDemo(注意:简写方式必须是本地连接-localhost,并且需要端口是3306的)
】
原代码修改如下:
package com.flying.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import org.junit.Test;
public class Demo {
@Test
public void chaxun() throws Exception{
Class.forName("com.mysql.jdbc.Driver");
Connection ct = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcDemo", "root", "root");
Statement st = ct.createStatement();
ResultSet res = st.executeQuery("select * from employee");
while (res.next()) {
System.out.println(res.getInt("id")+"--"+res.getString("name")+"--"+res.getInt("age"));
}
res.close();
st.close();
ct.close();
}
}
【测试查询数据库是否成功】
package com.flying.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import org.junit.Test;
public class Demo {
@Test
public void chaxun() throws Exception{
Class.forName("com.mysql.jdbc.Driver");
Connection ct = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcDemo", "root", "root");
Statement st = ct.createStatement();
//ResultSet res = st.executeQuery("select * from employee");
String sql = "update employee set age= 255 where name = '长城'";
boolean b = st.execute(sql);
if (b) {
ResultSet res = st.getResultSet();
while (res.next()) {
System.out.println(res.getInt("id")+"--"+res.getString("name")+"--"+res.getInt("age"));
}
res.close();
}else {
System.out.println("sql语句执行成功!一共操作了"+st.getUpdateCount()+"条sql语句");
}
st.close();
ct.close();
}
}