import java.sql.*; public class JDBCTest01{ public static void main(String[] args){ Connection conn=null; Statement stmt=null; try{ //1.注册驱动 Driver driver = new com.mysql.jdbc.Driver(); DriverManager.registerDriver(driver); //String url="jdbc:mysql://ip:port/bjpowernode"; String url="jdbc:mysql://localhost:3306/bjpowernode"; String user="root"; String password="333"; //2.获取连接 conn=DriverManager.getConnection(url,user,password); //3.获取数据库操作对象 stmt = conn.createStatement(); //4.执行sql String sql="insert into dept values(50,'renshibu','pudongxinqu')"; //executeUpdate专门执行DML语句的(insert update delete) //返回的是"影响数据库中的记录条数" //影响几行就返回几,是个int类型的数字 int count = stmt.executeUpdate(sql); System.out.println(count==1? "ok" : "not ok"); }catch(SQLException e){ e.printStackTrace(); }finally{ //6.释放资源 //为了保证资源一定释放,将其放在finally语句块中 //释放资源顺序由小到大 先关stmt 再关conn //分别对去try catch try{ if(stmt != null) { stmt.close(); } }catch(SQLException e){ e.printStackTrace(); } try{ if(conn != null) { conn.close(); } }catch(SQLException e){ e.printStackTrace(); } } } }
不需要:
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
只需要反射机制
Class.forName("com.mysql.jdbc.Driver");
这个方法的执行会导致后面类的加载,类加载的时候静态代码块会执行,静态代码块执行就完成了驱动注册.(静态代码块在类的源代码中)
这种方法常用的原因是,参数是一个字符串,可以写到配置文件中.
配置文件jdbc.properties
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/bjpowernode user=root password=333
在test.java程序中,可以使用如下方式获取对应的值
ResourceBundle bundle=ResourceBundle.getBundle("jdbc"); String driver=bundle.getString("driver"); String url=bundle.getString("url"); String user=bundle.getString("user"); String password=bundle.getString("password");
executeQuery是专门DQL语句的方法
返回ResultSet类型
ResultSet rs=null; String sql="select empno,ename,sal from emp"; rs = stmt.executeQuery(sql); while(rs.next()){ //跟列名,程序更健壮 //这个列名称不是表中的列名称,而是查询结果集的列名 int empno=rs.getInt("empno"); //jdbc中所有下标从1开始 //下标不健壮 String ename=rs.getString(2); double sal=rs.getDouble(3); System.out.println(empno+","+ename+","+(sal+100)); }