首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 关于jdbc的问题!
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jsjxsy2008
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-20 15:27:07 楼主
    我想问一个很基础的问题:java.sql.Connection中的prepareStatement(String sql,String[] columnNames)方法如何使用?最好能举个例子!
    (创建一个能返回由给定数组指定的自动生成键的默认 PreparedStatement 对象。此数组包含目标表中列的名称,而目标表包含应该返回的自动生成键。)文档中的解释我还是看不懂!
    拜托!

    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lkjfeijfidosjf
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 16:08:061楼 得分:0
    该回复于2008-08-21 11:48:54被版主删除
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xinhaoluan
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 16:28:022楼 得分:0
    PreparedStatement:表示预编译的SQL对象

    Statement和PreparedStatement的主要区别
    Statement是一个普通的SQL分析容器,Statement在executeQuery或者executeUpdate
    的时候,才指定我们要分析的SQL语句是谁

    PreparedStatement是一个预编译的分析容器,它在容器在创建的同时即指定要分析的SQL语句


    PreparedStatement使用场合
    PreparedStatement是一个预编译的容器,对于一条将会被重复执行的代码来说,它只是被分析一次
    而statement容器将会分析多次


    /**
    * 注意:使用了statement分析容器,这条写入的语句将会被分析10次
    */
    for(int i=0;i <10;i++){
    String sql = "INSERT INTO EMP(EMPNO,ENAME) VALUES(SEQ.NEXTVAL,'ZHANGSHAN')";
    ps.executeUpdate(sql);
    }


    //这里,制定要分析的sql语句,预分析的
    ps = con.prepareStatement("INSERT INTO EMP(EMPNO,ENAME) VALUES(SEQ.NEXTVAL,?)");
    /**
    * 在上面的SQL语句中的问号(?)表示的是预插入的值,在下面的确ps.setString(1, "zhangshan"+i)里的这个1就表示
    * SQL语句中出现的第一个问号,如果在条SQL语句中会出现第二个问号,那个就是ps.setString(2, "")
    * 注意:使用了PreparedStatement分析容器,这条写入的语句将会被分析1次
    */
    for(int i=0;i <10;i++){
    ps.setString(1, "zhangshan"+i);
    ps.executeUpdate();
    }

    希望对你有帮助
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yangch1986
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 16:34:323楼 得分:0
    Connection con=DriverManager.getConnection(url,name,pwd);
    PreparedStatement pstmt=con.prepareStatement(sql);
    pstmt.execute();
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhangkai08111
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 16:37:134楼 得分:0
    参数:
        sql - 可能包含一个或多个 '?' IN 参数占位符的 SQL 语句
        columnNames - 指示应该从一个或多个插入行中返回的那些列的列名称组成的数组
    返回:
        一个包含预编译语句的新 PreparedStatement 对象,该对象能够返回由给定列名称数组指定的自动生成键
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhangkai08111
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 16:41:125楼 得分:0
    自动生成键:比如mysql中的autoincreament还有oracle中的叫ide什么来,能返回这东西
    如果未指定表示自动生成键的列,则驱动自己确定最能表示自动生成键的列,然后返回。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xinhaoluan
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 16:42:136楼 得分:0
    补充:
    prepareStatement(String sql,String[] columnNames)这个方法中的第一个参数是SQL语句,这个SQL语句是带有问号的那种,
    第二个参数是对SQL语句中的问号的赋值。
    case:
        String sql = "INSERT INTO EMP(EMPNO,ENAME) VALUES(?,?)";
        String[] array = { "1", "Dawei"};
        con.prepareStatement(sql, array);
    如果我没有记错的话,这样应该是没有问题的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhangkai08111
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 17:09:237楼 得分:0
    引用 6 楼 xinhaoluan 的回复:
    补充:
    prepareStatement(String sql,String[] columnNames)这个方法中的第一个参数是SQL语句,这个SQL语句是带有问号的那种,
    第二个参数是对SQL语句中的问号的赋值。
    case:
    String sql = "INSERT INTO EMP(EMPNO,ENAME) VALUES(?,?)";
    String[] array = { "1", "Dawei"};
    con.prepareStatement(sql, array);
    如果我没有记错的话,这样应该是没有问题的

    好像不是吧。。columnNames - 指示应该从一个或多个插入行中返回的那些列的列名称组成的数组 ,这个是字段名,怎么可能去赋值呢。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xinhaoluan
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 17:38:528楼 得分:0
    引用 7 楼 zhangkai08111 的回复:
    引用 6 楼 xinhaoluan 的回复:
    补充:
    prepareStatement(String sql,String[] columnNames)这个方法中的第一个参数是SQL语句,这个SQL语句是带有问号的那种,
    第二个参数是对SQL语句中的问号的赋值。
    case:
    String sql = "INSERT INTO EMP(EMPNO,ENAME) VALUES(?,?)";
    String[] array = { "1", "Dawei"};
    con.prepareStatement(sql, array);
    如果我没有记错的话,这样应该是没有问题的

    好像不是吧。。columnNames - 指…


    可能是吧,好久不用JDBC,记性不太好
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved