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的主要内容,如果未能解决你的问题,请参考以下文章

面试常用的代码片段

mysql jdbc源码分析片段 和 Tomcat's JDBC Pool

JDBC操作数据库之查询数据

如何在片段中填充列表视图?

在 myeclipse中进行连接sql server的测试

MYBATIS05_ifwherechoosewhentrimsetforEach标签sql片段