jdbc
Posted caoxingchun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jdbc相关的知识,希望对你有一定的参考价值。
JavaDataBaseConnectivity Java数据库连接,JDBC是Sun提供的一套Api,通过Java语言和数据进行连接的API(Application Programma Interface)
在Maven工程中......在pom.xml文件中添加 mysql 依赖 mysql mysql-connector-java 5.1.6
在 main 方法中书写代码
//注册驱动 5.x之后的jar包版本会自动处理注册驱动的事儿 //告诉编译器使用的数据库是mysql 异常抛出 //Class.forName("com.mysql.jdbc.Driver"); //获取数据库连接 第一个root是用户名 第二个root 是密码
Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/newdb3", "root", "root");
System.out.println(conn); //创建执行SQL语句的对象 Statement s = conn.createStatement(); //执行SQL String sql = "create table jdbct1(id int,name varchar(10))"; s.execute(sql); System.out.println("执行完成!"); //关闭资源 conn.close();
注:执行SQL语句对象
- s.execute(sql) 此方法可以执行任意SQL语句,但是推荐执行数据库相关和表相关的SQL
- s.executeUpdate(sql) 此方法执行增删改相关的SQL
- s.executeQuery(sal) 此方法执行查询的SQL
读取配置文件
//创建属性对象 该对象用于读取属性配置文件 Properties p = new Properties(); //得到文件的输入流 InputStream ips = Demo02.class.getClassLoader().getResourceAsStream("jdbc.properties"); //把文件加载到属性对象中 p.load(ips); //读取数据 String driver = p.getProperty("driver"); String url = p.getProperty("url"); String username = p.getProperty("username"); String password = p.getProperty("password");
jdbc.properties
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/newdb3?useUnicode=true&characterEncoding=UTF-8 username=root password=root
数据库连接池DBCP
- 作用:通过对连接的复用,从而提高执行效率.
-
下载dbcp相关jar包,在pom.xml文件中添加一下内容
<!-- dbcp相关 --> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency>
DBUtils
public class DBUtils { private static BasicDataSource ds; static { //创建属性对象 该对象用于堆区属性配置文件 Properties p = new Properties(); //得到文件输入流 InputStream ips = DBUtils.class.getClassLoader().getResourceAsStream("jdbc.properties"); //把文件加载到属性对象中 try { p.load(ips); } catch (IOException e) { e.printStackTrace(); } String driver = p.getProperty("driver"); String url = p.getProperty("url"); String username = p.getProperty("username"); String password = p.getProperty("password"); /* * //注册驱动 Class.forName(driver); Connection conn = * DriverManager.getConnection(url, username, password); */ //创建数据库连接池对象 ds = new BasicDataSource(); //设置数据库连接信息 ds.setDriverClassName(driver); ds.setUrl(url); ds.setUsername(username); ds.setPassword(password); //设置初始连接数量 ds.setInitialSize(3); //设置最大连接数量 ds.setMaxActive(6); } public static Connection getConnection() throws SQLException, ClassNotFoundException, IOException { //从连接池中获取连接 抛出异常 Connection conn = ds.getConnection(); System.err.println(conn); return conn; } }
注:创建执行SQL对象时,如果有变量则使用 PreparedStatement 没有则使用 Statement
如下:有变量
//获取数据库连接 try (Connection conn = DBUtils.getConnection()) { //球队 String sql = "inset into team values(null,?)"; //创建执行sql对象 如果需要获取自增属性值则多加一个参数 Statement.RETURN_GENERATED_KEYS
PreparedStatement ps = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS); //执行sql ps.executeUpdate(); //获取自增主键值 ResultSet rs = ps.getGeneratedKeys(); while(rs.next()) { int teamId = rs.getInt(1); String sql2 = "insert into player values(null,?,?)"; PreparedStatement ps2 = conn.prepareStatement(sql2); ps2.setString(1, playerName); ps2.setInt(2, teamId); ps2.executeUpdate(); System.err.println("OK"); } } catch (Exception e) { e.printStackTrace(); }
无参数
try (Connection conn = DBUtils.getConnection()){ //创建SQL执行对象 Statement s = conn.createStatement(); String sql = "select * from jdbc_user"; ResultSet rs = s.executeQuery(sql); while(rs.next()) { System.err.println(rs.getString("username")); } } catch (Exception e) { e.printStackTrace(); }
Statement.RETURN_GENERATED_KEYS
以上是关于jdbc的主要内容,如果未能解决你的问题,请参考以下文章