JDBC02

来源:互联网 发布:淘宝精华帖子 编辑:程序博客网 时间:2024/06/06 01:54

JDBC02

package com.services;//链接对象import java.sql.Connection;//驱动管理器import java.sql.DriverManager;import java.sql.PreparedStatement;public class AB01Services {    /**     * 以最原始的方式完成数据添加             */    public boolean addAb01()throws Exception{        //1.定义驱动串:驱动jar的核心类        String drivers = "oracle.jdbc.driver.OracleDriver";        //2.定义链接串        String url = "jdbc:oracle:thin:@localhost:1521:orcl";        //3.加载驱动        Class.forName(drivers);        //4.创建链接        Connection conn =                 DriverManager.getConnection(url, "admin", "admin1234");        System.out.println(conn);        //5.定义sql:在没有保证SQL能正确执行的情况下,不要将SQL写入Java。        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,?,?)")                ;        //6.编译sql        PreparedStatement pstm = conn.prepareStatement(sql.toString());        //7.参数赋值        pstm.setObject(1, "2001");        pstm.setObject(2, "小明");        pstm.setObject(3, "555555");        pstm.setObject(4, "1");        //1        pstm.setObject(5, "2014-01-01");        pstm.setObject(6, "11");        pstm.setObject(7, "济宁");        pstm.setObject(8, "山东");        pstm.setObject(9, "丫丫");        //2        pstm.setObject(10, "155345678");        pstm.setObject(11, "02");        pstm.setObject(12, "软件工程");        pstm.setObject(13, "加州大学");        pstm.setObject(14, "02");        //3        pstm.setObject(15, "华盛顿大学");        pstm.setObject(16, "01");        pstm.setObject(17, "50");        pstm.setObject(18, "01");        /**         * 8.执行sql:         *          * int tag表示SQL语句执行完毕以后影响的记录数         */        int tag = pstm.executeUpdate();        return tag>0;    }

}

java.sql.SQLException: 无效的列索引“无效的列索引”其实是个低级的错误,原因无非几个:1、sql串的?号数目和提供的变量数目不一致:例如:jdbcTemplate.update(sql, new Object[] {newState,oldState});如果sql里面有1个?号,Object[]送了2个,就会报错。2、sql串里的?号书写不正确英文?和中文?有时难以区分。3、sql串的?号用''括了起来。例如:sql="UPDATE abc SET abc.name='?' WHERE abc.id='?'";把''去掉就可以了。4,遇到这种情况select*from user where   info   like   %?%;  虽然这是sql的写法,但是在jdbc 中需要改成 select*from user where   info   like   ?;如ps.setString(“%”+value+“%”);

package text;import com.services.AB01Services;;public class AB01ServicesText {    public static void main(String[] args) {        // TODO Auto-generated method stub        try {            AB01ServicesText.addAb01Text();        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    private static void addAb01Text()throws Exception {        AB01Services services = new AB01Services();        services.addAb01();    }}