powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / почему не хочет работать PreparedStatement
11 сообщений из 11, страница 1 из 1
почему не хочет работать PreparedStatement
    #34410686
newj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! подскажите, что не так? плиз.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
 package  beans.DB.base;

 import  beans.DB.DBConnectionDispatcher;

 import  java.sql.*;

/**
 * Created by IntelliJ IDEA.
 * User: oed0nv
 * Date: 21.03.2007
 * Time: 14:44:07
 * To change this template use File | Settings | File Templates.
 */
 public   class  UnifyNumberClamping {
    String qualifier;
    PreparedStatement pstmt =  null ;
    Connection conn =  null ;
    Statement stmt =  null ;
     private  ResultSet rs =  null ;
    //********************************************************
    // Декларация переменных
    String sql;
    int unNomOgr;
    private java.sql.Timestamp currentTimestamp;
//    private String currentTimestamp;
    //********************************************************


    public UnifyNumberClamping(){
        try{
            //получаем соеденение из пула
            qualifier = new DBConnectionDispatcher().getQualifier();
            conn = new DBConnectionDispatcher().getConnection();
            //создаем объект tatement,который можно использовать для выполнения SQL-запроса
            stmt = conn.createStatement();

            sql="select current timestamp from sysibm.sysdummy1";
            pstmt = conn.prepareStatement(sql);
            rs = pstmt.executeQuery();
            while (rs.next()){
//                currentTimestamp=Timestamp.valueOf(TimestampChange(rs.getString(1)));
                currentTimestamp=rs.getTimestamp(1);
            }

/*
            sql="insert into "+qualifier+"KU_UNN_OGR (UNN_TS) values('"+timestampChange(currentTimestamp)+"')";
            stmt.executeUpdate(sql);
*/
            sql="insert into "+qualifier+"KU_UNN_OGR (UNN_TS) values(?)";
            pstmt = conn.prepareStatement(sql);
//            pstmt.setString(1,String.valueOf(currentTimestamp));
            pstmt.setTimestamp( 1 ,currentTimestamp);
            pstmt.executeUpdate(sql);


/*
            sql="select unn_ogr from "+qualifier+"KU_UNN_OGR where UNN_TS='"+timestampChange(currentTimestamp)+"'";
            rs = stmt.executeQuery(sql);

            while (rs.next()){
                unNomOgr=rs.getInt(1);
            }
*/
            sql="select unn_ogr from "+qualifier+"KU_UNN_OGR where UNN_TS=?";
            pstmt = conn.prepareStatement(sql);
//            pstmt.setString(1,String.valueOf(currentTimestamp));
            pstmt.setTimestamp( 1 ,currentTimestamp);
            rs = pstmt.executeQuery();

             while  (rs.next()){
                unNomOgr=rs.getInt( 1 );
            }

/*
            sql="delete from "+qualifier+"KU_UNN_OGR where UNN_TS='"+timestampChange(currentTimestamp)+"'";
            stmt.executeUpdate(sql);
*/
            sql="delete from "+qualifier+"KU_UNN_OGR where UNN_TS=?";
            pstmt = conn.prepareStatement(sql);
//            pstmt.setString(1,String.valueOf(currentTimestamp));
            pstmt.setTimestamp( 1 ,currentTimestamp);
            pstmt.executeUpdate(sql);

//            System.out.println("UNN"+unNomOgr);

        } catch (SQLException sqle){
            System.out.println("***Bean UnifyNumberClamping***SQLException: "+sqle.getMessage());
            sqle.printStackTrace();
             throw   new  SecurityException(sqle.getMessage());
        }  catch  (Exception e){
            System.out.println("***Bean UnifyNumberClamping***Exception: "+e.getMessage());
             throw   new  SecurityException(e.getMessage());
        }  finally {
             try {
                //при закрытии объекта Statement (оператор), закрываются все связанные с ним ResultSet
                 if (stmt!= null ){
                    stmt.close();
                }
                 if (pstmt!= null ){
                    pstmt.close();
                }
                //ОЧЕНЬ ВАЖНО!!!!!Этот код возвращает соеденение в пул
                 if (conn!= null ){
                    conn.close();
                }
            } catch (SQLException sqle){
                System.out.println("***Bean UnifyNumberClamping***SQLException: "+sqle.getMessage());
            }
        }


    }



      //приводит к виду Timestamp в DB2
     public   static  String timestampChange(Timestamp Timestamp) {
        String r = String.valueOf(Timestamp);
        String d = "-";
        String p = ".";
        // '2004-11-15 18:29:32.083961' caiaiyai ia '2004-11-15-18.29.32.083961'
        r = r.substring( 0 , 4 ) + d + r.substring( 5 , 7 )+d+r.substring( 8 , 10 )+d+r.substring( 11 , 13 )+p+
                r.substring( 14 , 16 )+p+r.substring( 17 , 19 )+p+r.substring( 20 );

         return  r;
    }

     public   int  getNum(){
         return  unNomOgr;
    }

}

вылетает на запросах в которых есть установка параметра currentTimestamp
говорит

[IBM][CLI Driver] CLI0100E Неверное число параметров. SQLSTATE=07001
at beans.DB.base.UnifyNumberClamping.(UnifyNumberClamping.java:89)



с обычными стейтманами все нормально пашет
...
Рейтинг: 0 / 0
почему не хочет работать PreparedStatement
    #34410883
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
конструкции типа
Код: plaintext
"insert into "+qualifier+"KU_UNN_OGR (UNN_TS) values('"+timestampChange(currentTimestamp)+"')"
в топку, используйте нормальное решение
Код: plaintext
pstmt.setTimestamp( 1 ,currentTimestamp);
зы
Код: plaintext
1.
2.
r = r.substring( 0 , 4 ) + d + r.substring( 5 , 7 )+d+r.substring( 8 , 10 )+d+r.substring( 11 , 13 )+p+
                r.substring( 14 , 16 )+p+r.substring( 17 , 19 )+p+r.substring( 20 );
тоже переписать с исп. StringBuilder|StringBuffer
ззы
Удачи.
...
Рейтинг: 0 / 0
почему не хочет работать PreparedStatement
    #34411215
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автортоже переписать с исп. StringBuilder|StringBuffer
а еще лучше SimpleDateFormat
...
Рейтинг: 0 / 0
почему не хочет работать PreparedStatement
    #34411261
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТимоН автортоже переписать с исп. StringBuilder|StringBuffer
а еще лучше SimpleDateFormat
да и вообще функцию timestampChange выкинуть
...
Рейтинг: 0 / 0
почему не хочет работать PreparedStatement
    #34411389
newj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
эх надо бало лишнее вырезать(((
еще раз:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
           //получаем соеденение из пула
            qualifier =  new  DBConnectionDispatcher().getQualifier();
            conn =  new  DBConnectionDispatcher().getConnection();
            //создаем объект tatement,который можно использовать для выполнения SQL-запроса
            stmt = conn.createStatement();

            sql="select current timestamp from sysibm.sysdummy1";
            pstmt = conn.prepareStatement(sql);
            rs = pstmt.executeQuery();
             while  (rs.next()){

                currentTimestamp=rs.getTimestamp( 1 );
            }

            sql="insert into "+qualifier+"KU_UNN_OGR (UNN_TS) values(?)";
            pstmt = conn.prepareStatement(sql);

            pstmt.setTimestamp( 1 ,currentTimestamp);
            pstmt.executeUpdate(sql);


            sql="select unn_ogr from "+qualifier+"KU_UNN_OGR where UNN_TS=?";
            pstmt = conn.prepareStatement(sql);

            pstmt.setTimestamp( 1 ,currentTimestamp);
            rs = pstmt.executeQuery();

             while  (rs.next()){
                unNomOgr=rs.getInt( 1 );
            }

            sql="delete from "+qualifier+"KU_UNN_OGR where UNN_TS=?";
            pstmt = conn.prepareStatement(sql);

            pstmt.setTimestamp( 1 ,currentTimestamp);
            pstmt.executeUpdate(sql);


велет после
Код: plaintext
1.
2.
3.
4.
5.
            sql="insert into "+qualifier+"KU_UNN_OGR (UNN_TS) values(?)";
            pstmt = conn.prepareStatement(sql);

            pstmt.setTimestamp( 1 ,currentTimestamp);
            pstmt.executeUpdate(sql);

"неверное число параметров"
почему?
...
Рейтинг: 0 / 0
почему не хочет работать PreparedStatement
    #34411426
newj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
"insert into "+qualifier+"KU_UNN_OGR (UNN_TS) values('"+timestampChange(currentTimestamp)+"')"

писалось для простого стейтмена(потому и в коментах)

автор

тоже переписать с исп. StringBuilder|StringBuffer

а еще лучше SimpleDateFormat

чем лучше то?
...
Рейтинг: 0 / 0
почему не хочет работать PreparedStatement
    #34411434
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитайте документацию и поймете в чем разница. И про Prepared тоже.
...
Рейтинг: 0 / 0
почему не хочет работать PreparedStatement
    #34411460
newj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ага.... мне понятно что в jdk 1.3 есть тока стрингбуфер!
...
Рейтинг: 0 / 0
почему не хочет работать PreparedStatement
    #34411509
newj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и что я в доках про Prepared должен был вычитать?
...
Рейтинг: 0 / 0
почему не хочет работать PreparedStatement
    #34411579
newj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
фу ты блин
Код: plaintext
1.
pstmt.executeUpdate(sql); 

зачем то сдуру sql в скобках написал и продублировал код неправильно
...
Рейтинг: 0 / 0
почему не хочет работать PreparedStatement
    #34413840
cooluser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А имена таблиц и полей у вас кстати веселенкие, как вы в них не путаетесь только?
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / почему не хочет работать PreparedStatement
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]