powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Java + FireBird insert errors
22 сообщений из 22, страница 1 из 1
Java + FireBird insert errors
    #38174623
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, всем

У меня есть вот такой небольшой код
Код: java
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.
package TestsPackage;

import java.io.Serializable;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.firebirdsql.jdbc.FBSQLException;

public class test2 {

	/**
	 * @param args
	 * @throws ParseException 
	 */
	
	
	//Процедура соединения проекта с базой FireBird 
    public static Connection dbConnection()throws Exception
{


      //Locale.setDefault(Locale.ENGLISH);
      Class.forName("org.firebirdsql.jdbc.FBDriver");
      
      return DriverManager.getConnection(      
    		  "jdbc:firebirdsql:localhost/3050:" + "C:\\firebird\\Dessertation_new\\GREECE.FDB", "SYSDBA", "masterkey");

}
    
    
    
    //
    public static void CreateNewTable() throws Exception
    {
    	Connection con1 = dbConnection();
        Statement s=con1.createStatement();
        
    	//s.executeUpdate("drop table " + parent.textField_1.getText());
    	s.executeUpdate("CREATE TABLE " + "testt" +" (date_ DATE, time_ VARCHAR(150), lat VARCHAR(150), longit VARCHAR(150), depth VARCHAR(150), regname VARCHAR(150), mag VARCHAR(150))");
       // s.executeUpdate("insert into help_ser.table1 (surname, name, pat) values ('"+ surname + "','"+ name+"','"+pat+"')");
    }
    
    
    
    //
    public static void InsertDB(String date, String time, String lat, String longit, String depth, String regname, String mag) throws Exception,FBSQLException
    {
    	Connection con1 = dbConnection();
        Statement s=con1.createStatement();    
        
        String original = date;
        
     // первый формат
        SimpleDateFormat format1 = new SimpleDateFormat();
        format1.applyPattern("dd/mm/yy");

// второй формат
        SimpleDateFormat format2 = new SimpleDateFormat();
        format2.applyPattern("yyyy-mm-dd");

// преобразование в дату используя первый формат
        Date date1 = format1.parse(original);

// преобразование даты в строку используя второй формат
        System.out.println(format1.format(date1));
        String date_1 = format1.format(date1);
        
        
    
        s.executeUpdate("insert into " + "testt" +" (date_, time_, lat, longit, depth, regname, mag) values ('"+ date_1 + "','" + time + "','" + lat+"','"+longit+"', '"+ depth + "','"+ regname+"','"+mag+"')");
    }
	
	
	
	public static void main(String[] args) throws ParseException {
		// TODO Auto-generated method stub

		 String original = "21/03/06";

		// первый формат
		        SimpleDateFormat format1 = new SimpleDateFormat();
		        format1.applyPattern("dd/mm/yy");

		// второй формат
		        SimpleDateFormat format2 = new SimpleDateFormat();
		        format2.applyPattern("yyyy-mm-dd");

		// преобразование в дату используя первый формат
		        Date date = format1.parse(original);

		// преобразование даты в строку используя второй формат
		        Serializable date_1 = format1.format(date);
		        System.out.println(date_1);
		        
		        String str = "12/03/06";
		        System.out.println(str.subSequence(0, 8));
		       // System.out.println(Double.parseDouble(str));
		        
		        
		     /*   try {
					CreateNewTable();
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}*/
		        
		        String st = str.substring(0, 8);
		        
		        try {
					InsertDB(str, "", "", "", "", "ghfhfgh", "6");
				} catch (FBSQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		        
		        
	}

}




Вставка с помощью процедуры InsertDB() идет нормально с датами, числа которых не превышают 12 число.

Если вместо 12/03/06 я напишу 13/03/06
Вот такая ошибка выходит:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544334. conversion error from string "13/03/06"
	at org.firebirdsql.jdbc.AbstractStatement.executeUpdate(AbstractStatement.java:277)
	at TestsPackage.test2.InsertDB(test2.java:74)
	at TestsPackage.test2.main(test2.java:114)
Caused by: org.firebirdsql.gds.GDSException: conversion error from string "13/03/06"
	at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.readStatusVector(AbstractJavaGDSImpl.java:2219)
	at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.receiveResponse(AbstractJavaGDSImpl.java:2169)
	at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.iscDsqlExecute2(AbstractJavaGDSImpl.java:1212)
	at org.firebirdsql.gds.impl.GDSHelper.executeStatement(GDSHelper.java:227)
	at org.firebirdsql.jdbc.AbstractStatement.internalExecute(AbstractStatement.java:1423)
	at org.firebirdsql.jdbc.AbstractStatement.executeUpdate(AbstractStatement.java:273)
	... 2 more



Помогите, пожалуйста, в чем может быть ограничение?
...
Рейтинг: 0 / 0
Java + FireBird insert errors
    #38174629
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используйте PreparedStatement
http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html
и binding variables
чтобы не зависесть от форматов дат
...
Рейтинг: 0 / 0
Java + FireBird insert errors
    #38174631
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Philip_StubbornВставка с помощью процедуры InsertDB() идет нормально с датами, числа которых не превышают 12 число.
Если вместо 12/03/06 я напишу 13/03/06
Вот такая ошибка выходит:
Помогите, пожалуйста, в чем может быть ограничение?
В году 12 месяцев. Не задумывались над этим?
...
Рейтинг: 0 / 0
Java + FireBird insert errors
    #38174637
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А еще месяцы и минуты при форматировании перепутаны
...
Рейтинг: 0 / 0
Java + FireBird insert errors
    #38174641
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
Извините, это был неисправленный момент во время копирования, а так, все было исправлено и испробовано снова.
...
Рейтинг: 0 / 0
Java + FireBird insert errors
    #38174663
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Изменил на
Код: java
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.
//
    public static void InsertDB(String date, String time, String lat, String longit, String depth, String regname, String mag) throws Exception,FBSQLException
    {
    	Connection con1 = dbConnection();
       // Statement s=con1.createStatement();
    	PreparedStatement s;
    	
        
        String original = date;
        
     // первый формат
        SimpleDateFormat format1 = new SimpleDateFormat();
        format1.applyPattern("dd/mm/yy");

// второй формат
        SimpleDateFormat format2 = new SimpleDateFormat();
        format2.applyPattern("yyyy-mm-dd");

// преобразование в дату используя первый формат
        Date date1 = format1.parse(original);

// преобразование даты в строку используя второй формат
        System.out.println(format1.format(date1));
        String date_1 = format1.format(date1);
        
        
    
        s = con1.prepareStatement("insert into " + "testt" +" (date_, time_, lat, longit, depth, regname, mag) values ('"+ date_1 + "','" + time + "','" + lat+"','"+longit+"', '"+ depth + "','"+ regname+"','"+mag+"')");
        s.execute();
    }



Но ошибка та же.
...
Рейтинг: 0 / 0
Java + FireBird insert errors
    #38174678
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, Philip_Stubborn!

> Date date1 = format1.parse(original);

Ну дата и дата.

> s = con1.prepareStatement("insert into " + "testt" +" (date_, time_, lat, longit, depth, regname, mag) values ('"+ date_1 + "','" + time + "','" + lat+"','"+longit+"', '"+ depth + "','"+ regname+"','"+mag+"')");

А вот теперь date_1 преобразуется в строку виде "как повезёт". И привет.
Вам же сказали первым же делом- используйте PreparedStatement.
Не тащите идиотские привычки из PHP и подобной фигни, не стройте
SQL-запросы из текста и параметров...

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Java + FireBird insert errors
    #38174683
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GKS_Samara,
Можете помочь мне сделать это? Как при первом же случае?
...
Рейтинг: 0 / 0
Java + FireBird insert errors
    #38174699
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Philip_StubbornМожете помочь мне сделать это? Как при первом же случае?
Вы не пробовали читать то что вам пишут? Не надо конкатенировать SQL с переменными. Это источник всех ваших проблем.
...
Рейтинг: 0 / 0
Java + FireBird insert errors
    #38174708
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
А как тогда Вы предлагаете составить запрос, чтобы значения этих переменных вставить в таблицу?
...
Рейтинг: 0 / 0
Java + FireBird insert errors
    #38174718
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Philip_StubbornBlazkowicz,
А как тогда Вы предлагаете составить запрос, чтобы значения этих переменных вставить в таблицу?
Я предлагаю пройти вам вот по этой ссылке
http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html
и посмотреть то как я предлагают вставлять значения переменных.
...
Рейтинг: 0 / 0
Java + FireBird insert errors
    #38174807
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
Скажите, пожалуйста, как быть с setDate(1,"13/12/12") - строку нельзя, как ее преобразовать?
...
Рейтинг: 0 / 0
Java + FireBird insert errors
    #38174808
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Philip_Stubborn,
у вас гинекологов в роду не было?
...
Рейтинг: 0 / 0
Java + FireBird insert errors
    #38174812
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapecker,
Не знаю, может быть
...
Рейтинг: 0 / 0
Java + FireBird insert errors
    #38174813
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Philip_StubbornСкажите, пожалуйста, как быть с setDate(1,"13/12/12") - строку нельзя, как ее преобразовать?
У вас же есть date_1. Зачем строка?
...
Рейтинг: 0 / 0
Java + FireBird insert errors
    #38174822
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Philip_Stubbornjavapecker,
Не знаю, может быть
Вам же написали выше mm - минуты, MM - месяц.
...
Рейтинг: 0 / 0
Java + FireBird insert errors
    #38174826
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
date_1 типа String
...
Рейтинг: 0 / 0
Java + FireBird insert errors
    #38174852
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Philip_Stubborndate_1 типа String
ОК.
...
Рейтинг: 0 / 0
Java + FireBird insert errors
    #38174871
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, Philip_Stubborn!

> date_1 типа String

Ну date1 тогда используйте!

Вообще нельзя писать в БД дату в виде строки без явного указания
формата. Потому что настройками ОС/БД можно поменять формат.

А по делу- надоело смотреть на цирк- делать надо ТАК:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
s = con1.prepareStatement(
"insert into testt (date_, time_, lat, longit, depth, regname, mag)"
+ " values (:date_,:time_,:lat,:longit,:depth,:regname,:mag)");
s.setDate(1, date1);
s.setString(2, time);
.....
s.setString(7, mag);
s.execute();




--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Java + FireBird insert errors
    #38174923
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GKS_Samara,
Спасибо большое. Вы очень помогли.
...
Рейтинг: 0 / 0
Java + FireBird insert errors
    #38174925
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, всем
...
Рейтинг: 0 / 0
Java + FireBird insert errors
    #38174964
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, Philip_Stubborn!

> Спасибо большое. Вы очень помогли.

Только в jdbc надо не :date_ писать а просто % (без имени). Вроде так...

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Java + FireBird insert errors
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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