JDBC java date base connectivity java数据库链接java
JDBC 整体包括两大部份内容sql
第一部分 java.sal.* JDBC基础内容数据库
java.sql.Connection ---数据库链接对象:到数据库的链接安全
做用:链接数据库oracle
java.sql.statement --- 语句对象:表明程序须要执行的sql语句,性能和安全性很差。app
做用:处理sql语句ide
java.sql.PreparedStatement--- 预编译语句对象性能
性能和安全性更好ui
java.sql.ResultSet ---结果集对象: 表明sql语句执行的结果url
结果处理
java.sql.DriverManager ---驱动管理器:管理驱动,负责具体连接目标数据库
java.sql.ResultSetMateDate ---结果集元数据(结果集描述对象)
做用: 描述ResultSet相关信息
第二部分 java.sql.* JDBC 拓展内容
java.sql.DataSource ---数据库链接池
驱动jar 是各个数据库厂商为java准备 的让其经过jar包来实现对本身数据的操做
在本代码敲以前应该先导入驱动jar包,ojdbc5 或者ojbdc6
基本的Oracle数据库链接
public boolean addAb01()throws Exception { //1 定义驱动串 private static final String driver="oracle.jdbc.driver.OracleDriver"; //2.定义连接串 private static final String url="jdbc:oracle:thin:@localhost:1521:orcl"; //3.加载驱动器 Class.forName(driver); //4.建立链接 /** * "admin" 是我要链接的数据库帐号 * "admin1234" 是我要链接的数据库帐号对应的口令 也就是密码 */ Connection conn=DriverManager.getConnection(url,"admin","admin1234"); //5.定义sql语句 /** * 个人表已经建立完了 我是在添加数据 */ StringBuilder sql=new StringBuilder() .append("INSERT INTO AB01(AAB101,AAB102,AAB103,AAB104,AAB105,") .append(" AAB106,AAB107,AAB108,AAB109,AAB110,") .append(" AAB111,AAB112,AAB113,AAB114,AAB115,") .append(" AAB116,AAB117,AAB118,AAB119,AAB120)") .append(" VALUES(A_AB01.NEXTVAL,?,?,?,?,") .append(" TO_DATE(?,'YYYY-MM-DD'),?,?,?,?,") .append(" ?,?,?,?,?,") .append(" ?,?,SYSDATE,?,?)") ; //6.编译sql语句 PreparedStatement pstm=conn.prepareStatement(sql.toString()); //7.给变量赋值,在定义sql语句时,将其中的变量所有用问好替代 pstm.setObject(1, "2001"); pstm.setObject(2, "王徽"); pstm.setObject(3, "55555"); pstm.setObject(4, "1"); //row2 pstm.setObject(5, "1999-12-26"); pstm.setObject(6, "11"); pstm.setObject(7, "青岛黄岛"); pstm.setObject(8, "中国胶州"); pstm.setObject(9, "王徽"); //row3 pstm.setObject(10, "110"); pstm.setObject(11, "02"); pstm.setObject(12, "**网"); pstm.setObject(13, "山东**大学"); pstm.setObject(14, "02"); //row4 pstm.setObject(15, "山东**大学"); pstm.setObject(16, "01"); pstm.setObject(17, "50"); pstm.setObject(18, "01"); //8.执行sql 并将结果 返回 他返回的是执行的行数,大于0说明成功即大于0为true反之为false return pstm.executeUpdate()>0; }
这样一次基本的oracle数据库就链接上啦 ,在这以前你须要导入一个连接用的驱动jar 。
这只是针对一次连接,不须要考虑内存虚耗之类的问题,若是屡次连接 就不能这样写了,,能够将连接部分拿出来写一个静态块 ,new一个类是就创建链接,再也不重重复创建链接,另外操做完毕后,应该关闭pstm.close()与conn.close()将他们俩关闭
要放到一个final中,这样无论有没有异常抛出 最后都是将其关闭。可是要注意的是 pstm与conn的顺序,先关pstm后关闭conn,还一点将他们俩放在一块儿,一旦pstm出现异常就会结束方法,conn并不能关闭,因此要给他们分别try-catch,这样就能够确保关闭了
import java.sql.Connection; import java.sql.PreparedStatement; import java.util.Map; import com.neusoft.system.db.DBUtils; public class Ab02Service { public boolean addAb01(Map<String, Object> dto)throws Exception { //定义JDBC接口变量 Connection conn=null; PreparedStatement pstm=null; try { // 建立连接对象 conn=DBUtils.getConnection(); //3.定义SQL语句 StringBuilder sql=new StringBuilder() .append("INSERT INTO AB01(AAB101,AAB102,AAB103,AAB104,AAB105,") .append(" AAB106,AAB107,AAB108,AAB109,AAB110,") .append(" AAB111,AAB112,AAB113,AAB114,AAB115,") .append(" AAB116,AAB117,AAB118,AAB119,AAB120)") .append(" VALUES(S_AB01.NEXTVAL,?,?,?,?,") .append(" TO_DATE(?,'YYYY-MM-DD'),?,?,?,?,") .append(" ?,?,?,?,?,") .append(" ?,?,SYSDATE,?,?)") ; ; //4.编译SQL语句 pstm=conn.prepareStatement(sql.toString()); //5.参数赋值 pstm.setObject(1, dto.get("aab102")); pstm.setObject(2, dto.get("aab103")); pstm.setObject(3, dto.get("aab104")); pstm.setObject(4, dto.get("aab105")); pstm.setObject(5, dto.get("aab106")); pstm.setObject(6, dto.get("aab107")); pstm.setObject(7, dto.get("aab108")); pstm.setObject(8, dto.get("aab109")); pstm.setObject(9, dto.get("aab110")); pstm.setObject(10, dto.get("aab111")); pstm.setObject(11, dto.get("aab112")); pstm.setObject(12, dto.get("aab113")); pstm.setObject(13, dto.get("aab114")); pstm.setObject(14, dto.get("aab115")); pstm.setObject(15, dto.get("aab116")); pstm.setObject(16, dto.get("aab117")); pstm.setObject(17, dto.get("aab119")); pstm.setObject(18, dto.get("aab120")); //6.返回 return pstm.executeUpdate()>0; } finally { try { pstm.close(); } catch (Exception e) { e.printStackTrace(); } try { conn.close(); } catch (Exception e) { e.printStackTrace(); } } } }
咱们用map来实现数据的放入:
public class Ab01ServicesTest { public static void main(String[] args) { Ab02Service abs=new Ab02Service(); boolean tag=false; Map<String, Object> map=new HashMap<>(); map.put("aab102", "119"); map.put("aab103", "宋振华"); map.put("aab104", "110"); map.put("aab105", "1"); map.put("aab106", "1995-03-10"); map.put("aab107", "05"); map.put("aab108", "潍坊"); map.put("aab109", "淄博"); map.put("aab110", "11"); map.put("aab111", "8792"); map.put("aab112", "02"); map.put("aab113", "01"); map.put("aab114", "03"); map.put("aab115", "05"); map.put("aab116", "01"); map.put("aab117", "03"); map.put("aab119", "200"); map.put("aab120", "1"); try { tag=abs.addAb01(map); } catch (Exception e) { e.printStackTrace(); } System.out.println(tag); } }