登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

仙剑奇侠传的博客

羽化成仙

 
 
 

日志

 
 

prepareStatement CallableStatement Statement DatabaseMetaData  

2011-07-18 00:53:13|  分类: JDBC |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

类名:prepareStatement

该类实现带参数的sql处理,可以写一条语句,设置多条参数,减少了SQL语句的写作。如插入多行数据、修改多行数据

类示例:

pstmt = conn.prepareStatement("insert into mytest_table values (?, ?)");

      pstmt.setInt(1, 1);

      pstmt.setString(2, "row 1");

      pstmt.addBatch();

 

      pstmt.setInt(1, 2);

      pstmt.setString(2, "row 2");

      pstmt.addBatch();

 

      pstmt.executeBatch();

DataSource

该接口代表一个数据库,其实现方式有:通过weblogic通应用服务器建立好他,然后按客户端调用EJB的方式调用。一种是通过原生的驱动程序实现这个接口的对象。

数据源地调用代码:

 

OracleDataSource ods = new OracleDataSource();

            ods.setURL("jdbc:oracle:thin:@localhost:1521:maximo");

            ods.setUser("java");

            ods.setPassword("java123456");

            Connection conn = ods.getConnection();

数据源能过JNDI查找实现

    Properties prop=new Properties();

            prop.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");

            prop.put(javax.naming.Context.PROVIDER_URL,"t3://localhost:7001");

            InitialContext  ctx= new InitialContext(prop);

            DataSource dataSource=(DataSource)ctx.lookup("maximo");

            Connection conn = dataSource.getConnection();

定义列类型

defineColumnType。这是oracleOracleStatement提供的一个方法,可以把相关类型从其他类型转到字符串型,减少java转换的工作量,转换在数据库内查询时完成,加快运行速度。

 

((OracleStatement)stmt).defineColumnType (1, Types.VARCHAR, 7);

 

    ResultSet rset = stmt.executeQuery ("select employee_id from employees");

    while (rset.next ())

    {

      System.out.println (rset.getString (1));

    }

CallableStatement

此对象用来调用存储过程,如果是过程或函数输出参数,需要用方法注册:

CallableStatement

CallableStatement procinout = conn.prepareCall ("begin procinout (?, ?); end;");

      procinout.registerOutParameter (1, Types.INTEGER);

      procinout.registerOutParameter (2, Types.VARCHAR);

      procinout.setInt (1, 404);

      procinout.setString (2, "North Pole");

      procinout.execute ();

      System.out.println ("\ndump table regions after calling to procinout--"

                          + "insert 404 North Pole\n");

Statement

用来查询与执行DDLDCL

rset.moveToInsertRow();

 

    // Assign the new values

    rset.updateInt (1, employeeId);

    rset.updateString (2, firstName);

    rset.updateString (3, lastName);

    rset.updateString (4, email);

    rset.updateString (5, phone);

    rset.updateDate (6, date);

    rset.updateString (7, jobid);

    rset.updateInt (8, sal);

    rset.updateInt (9, commi);

    rset.updateInt (10, mgrid);

    rset.updateInt (11, deptid);

 

    // Insert the new row to database

rset.insertRow();

 

//update for a line

while (rset.next ())

    {

      // save the old value

      salary = rset.getInt (4);

      // update the row

      rset.updateInt (4, salary + raise);

      // flush the changes to database

      rset.updateRow ();

      // show the changes

      System.out.println (rset.getInt(1)+" "+rset.getString(2)+" "+

                          rset.getString(3) + " " +

                          salary+" -> "+rset.getInt(4));

    }

DatabaseMetaData

获得相关的数据库参数

DatabaseMetaData dbmd = conn.getMetaData();

  评论这张
 
阅读(190)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018