java连接数据库的三种方式

java web 应用连接数据库的时候可以采用两种方式
1 java.sql.* DriverManager 获取数据库连接 然后使用statement preparedstatement resultset操作数据库。 这种方式存在的弊端是数据库名 用户名 密码都需要硬编码在代码中,一旦这些东西发生变化 那么整个程序需要重新编译
2 javax.sql.* 使用 DataSource的方案,这种方案采用连接池的方式,对于这样的资源 在web应用中 我们可以配置在context.xml中 这样 我们只需要查表的方式用JNDI 来获取连接池的连接,数据库名 用户名 密码的更改 只需要通过修改 context.xml 文件就可以了
context.xml可以配置在2个地方
(1)tomcat服务器 tomcat/conf/context.xml
直接在文件中加入

          auth="Container"
          type="javax.sql.DataSource"
          driverClassName="org.gjt.mm.mysql.Driver"
          url="jdbc:mysql://localhost/testforjavajdbc"
          username="root"
          password="root"
          maxActive="100"
          maxIdle="30"
          maxWait="10000"/>
          服务器会在开启时加载资源,应用通过JNDI  可以用NAME的方式来访问资源

      (2)配置在应用 webroot/META-INF下
             创建context.xml 文件



      type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver"
      url="jdbc:mysql://127.0.0.1:3306/testforjavajdbc"
      username="root" password="root" >


            需要注意  webapp中的文件 都要通过配置 web.xml  来实现被服务器发现,如果服务器找不到文件定义,那么可能报异常,e.g.如果只添加context.xml  不修改web.xml  那么app将会跑不起来
      需要在web.xml 中需要加

jdbc/testforjavajdbc
javax.sql.DataSource

    定义资源名和类型


配置完成  程序中试一下
   Context ctx = new InitialContext();
        DataSource ods = (DataSource) ctx
                .lookup("java:comp/env/jdbc/testforjavajdbc");

        // Class.forName("com.mysql.jdbc.Driver");
        //
        // Connection con = DriverManager.getConnection(
        // "jdbc:mysql://localhost:3306/testforjavajdbc", "root",
        // "root");

        Connection con = ods.getConnection();
        Statement sql = con.createStatement();
        ResultSet rs = sql.executeQuery("select * from user");
        while (rs.next()) {
            System.out.println(rs.getString(1) + " " + rs.getString(2));
        }
        rs.close();
        sql.close();
        con.close();

 试验成功
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值