jdbc连接数据库 以oracle为例

来源:互联网 发布:sql server安全策略 编辑:程序博客网 时间:2024/05/01 20:32

首先要有oracle的java驱动,已经上传到我的资源,免积分下载.

驱动包不要下解压,复制到webroot的lib目录,这时在webapplibraries下会自动生成对应的驱动库


接下来就是jdbc连接的五个步骤,其他数据库都是大同小异,根据驱动不同改变参数地址就可以了。

1.加载驱动

2.建立连接

3.创建命令对象,执行命令

4.返回执行结果

5.关闭资源


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class JdbcTest {


public static void main(String[] args) {

//1.加载数据库驱动
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {

e.printStackTrace();
}
//创建数据库连接

    Connection conn =null ;
    Statement stmt=null;
    ResultSet rs=null;
    try {
      conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.2:1521:orcl",
     "jereh_edu", "123456");

       //参数一连接地址;参数二,用户名参数三,密码。
//创建命令对象statement 并执行sql命令
stmt =conn.createStatement();
rs =stmt.executeQuery("select *from emp e where e.empno=7499  ");


while (rs.next()){
System.out.println(rs.getRow());
   String eno=rs.getString("empno");
String ename =rs.getString("ename");
System.out.println(eno+"姓名"+ename);
}

    } catch (SQLException e) {

e.printStackTrace();
} finally{

try {
if(rs!=null){
rs.close();
}
if(stmt!=null){
stmt.close();
}
if (conn!=null) {
conn.close();
}
} catch (SQLException e) {

e.printStackTrace();
}


}


}


}




用statement的效率并不高,因为每次执行这些语句时每次对sql语句进行编译,我们可以应用prepareStatement类提高效率,这个类会对SQL语句进行预编译,省去每次编译的时间


public int addFirstLevelbypapare(FirstLevel fl){
       int count =0;
       String sql ="INSERT INTO YUPQ_NEWS(ID,TITLE,CREATOR,CREATEDATE) VALUES(?,?,?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'))";

//???号是占位符,函数第一次调用时会被编译,再次调用时只把参数代替?直接执行,
      try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
      Connection conn =null;
      try {
conn=DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.2:1521:orcl","jereh_edu", "123456");
 PreparedStatement pstatm=  conn.prepareStatement(sql);

//生成PreparedStatement对象





 pstatm.setString(1, fl.getId());//把第一个?替换为 fl.getId()的返回值
 pstatm.setString(2, fl.getTitle());//把第2个?替换为 fl.getTitle()的返回值
 pstatm.setString(3, fl.getCreator());//
 pstatm.setString(4 , fl.getCreateDate());//
 count= pstatm.executeUpdate();
      } catch (SQLException e) {

e.printStackTrace();
}
      
      return count;
    }
    


这个地方只是演示  要记住的最后要释放资源向上一个一样关闭连接等,,

0 0