一、JDBC连数据库
1、jdbc连数据库
- sql:
Demo1.java:create database day14 character set utf8 collate utf8_general_ci; use day14; create table user( id int primary key auto_increment, name varchar(40), password varchar(40), email varchar(60), birthday date )character set utf8 collate utf8_general_ci; insert into user(name,password,email,birthday) values('zs','123456','zs@sina.com','1980-12-04'); insert into user(name,password,email,birthday) values('lisi','123456','lisi@sina.com','1981-12-04'); insert into user(name,password,email,birthday) values('wangwu','123456','wangwu@sina.com','1979-12-04');
注意:在实际开发中并不推荐采用registerDriver方法注册驱动。原因有二:package cn.itcast.demo; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; class Demo1 { public static void main(String[] args) throws SQLException { //1、加载驱动。在工程里新建一个lib文件夹,把mysql-connector-java-5.1.26-bin.jar复制到lib文件夹下,再Build Path一下。 DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //2、连接数据库 String url = "jdbc:mysql://localhost:3306/day14"; Connection conn = DriverManager.getConnection(url, "root", "root"); //3、创建statement Statement st = conn.createStatement(); //4、发送sql语句 String sql = "select id, name, password, email, birthday from user"; ResultSet rs = st.executeQuery(sql); //5、取出ResultSet集合 while(rs.next()) { System.out.println("id=" + rs.getObject("id")); System.out.println("name=" + rs.getObject("name")); System.out.println("password=" + rs.getObject("password")); System.out.println("email=" + rs.getObject("email")); System.out.println("birthday=" + rs.getObject("birthday")); } //6、关闭资源。倒着向上关闭。 rs.close(); st.close(); conn.close(); } }
1、查看Driver的源代码可以看到,如果采用此种方式,会导致驱动程序注册两次,也就是在内存中会有两个Driver对象。
2、程序依赖mysql的api,脱离mysql的jar包,程序将无法编译,将来程序切换底层数据库将会非常麻烦。
- 推荐方式:
Class.forName("com.mysql.jdbc.Driver");
采用此种方式不会导致驱动对象在内存中重复出现,并且采用此种方式,程序仅仅只需要一个字符串,不需要依赖具体的驱动,使程序的灵活性更高。
2、数据库URL
- jdbc:mysql:[]//localhost:3306/test ?参数名:参数值
常用数据库URL地址的写法:
Oracle写法:jdbc:oracle:thin:@localhost:1521:sid
SqlServer—jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sid
MySql—jdbc:mysql://localhost:3306/sid
Mysql的url地址的简写形式: jdbc:mysql:///sid (//省略了localhost:3306/库名)
常用属性:useUnicode=true&characterEncoding=UTF-8