powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JDBC
10 сообщений из 10, страница 1 из 1
JDBC
    #33636468
victorp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При попытке вставки данных в базу выдается ошибка :
Underlying result set does not contain all columns
that form 'best row identifier'
Делается под FireBird.

uprs.moveToInsertRow();

uprs.updateString(1, "Kona");
uprs.updateInt(2, 150);
uprs.updateFloat(3, 10.99f);
uprs.updateInt(4, 0);
uprs.updateInt(5, 0);

uprs.insertRow();

Не могу понять причину. Может кто сталкивался ?
...
Рейтинг: 0 / 0
JDBC
    #33637037
Евгений Путилин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
victorpНе могу понять причину. Может кто сталкивался ?
Пиши понятнее что ты делаеш и как, вообщето данные вставляют через PreparedStatement который получен через препарирование insert или в крайнем случае execute procedure, но только в практологических случаях через ResultSet
...
Рейтинг: 0 / 0
JDBC
    #33638094
victorp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пример взят из сановской документации по JDBC
Как вставить данные по другому я знаю. Но при разборе данного
примера возникает ошибка о которой я говорил в предыдущем своем письме.
Может это FB JDBC драйвера не позволяют такого. Но к сожалению под
рукой нет другого сервера для проверки....

Код: 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.
 public   class  InsertRow {

	 public   static   void  main(String args[]) {

	String url = "jdbc:firebirdsql:localhost/3050:d:/java/db/testJDBC.gdb";
		Connection con;
		Statement stmt;
		String query = "select COF_NAME, PRICE from COFFEES";
		
		 try  {

			 Class .forName("org.firebirdsql.jdbc.FBDriver");

		}  catch (java.lang.ClassNotFoundException e) {
			System.err.print("ClassNotFoundException: ");
			System.err.println(e.getMessage());
		}

		 try  {

			con = DriverManager.getConnection(url, 
					"SYSDBA", "masterkey");

			stmt = con.createStatement(
	ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);

			ResultSet uprs = stmt.executeQuery(
				query);
			
			uprs.moveToInsertRow();

			uprs.updateString("COF_NAME", "Kona");
			uprs.updateInt("SUP_ID",  150 );
			uprs.updateFloat("PRICE",  10 .99f);
			uprs.updateInt("SALES",  0 );
			uprs.updateInt("TOTAL",  0 );
	
                       		uprs.insertRow();
			uprs.beforeFirst();

			System.out.println("Table COFFEES after insertion:");
			 while  (uprs.next()) {
				String s = uprs.getString("COF_NAME");
				 int  sup = uprs.getInt("SUP_ID");
				 float  f = uprs.getFloat("PRICE");
				 int  sales = uprs.getInt("SALES");
				 int  t = uprs.getInt("TOTAL");
				System.out.print(s + "   " + sup + "   " + f + "   ");
				System.out.println(sales + "   " + t);
			}

			uprs.close();
			stmt.close();
			con.close();

		}  catch (SQLException ex) {
			System.err.println("SQLException: " + ex.getMessage());
		}
	}
}
...
Рейтинг: 0 / 0
JDBC
    #33638128
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не знаток FB JDBC, но ты в SELECT'е указываешь только два поля, а меняешь четыре.
...
Рейтинг: 0 / 0
JDBC
    #33638683
victorp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опс, извините, ошибочка вышла. Конечно же количество полей в селекте
не равно кол-ву полей которое я хочу вставить. Когда помещал здесь код
строки раскомментировал, а селект не поправил. Вопрос остается открытым
при исполнении ниже приведенного кода возникает исключительная ситуация

Underlying result set does not contain all columns that form 'best row identifier'.

Код: 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.
 public   class  InsertRow {

	 public   static   void  main(String args[]) {

		String url = "jdbc:firebirdsql:localhost/3050:d:/java/db/testJDBC.gdb";
		Connection con;
		Statement stmt;
		String query = "select COF_NAME,SUP_ID, PRICE,SALES,TOTAL from COFFEES";
	

		 try  {

			 Class .forName("org.firebirdsql.jdbc.FBDriver");

		}  catch (java.lang.ClassNotFoundException e) {
			System.err.print("ClassNotFoundException: ");
			System.err.println(e.getMessage());
		}

		 try  {

			con = DriverManager.getConnection(url, 
					"SYSDBA", "masterkey");

			stmt = con.createStatement(
				ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
			ResultSet uprs = stmt.executeQuery(
				query);
			
			uprs.moveToInsertRow();

			uprs.updateString("COF_NAME", "Kona");
			uprs.updateInt("SUP_ID",  150 );
			uprs.updateFloat("PRICE",  10 .99f);
			uprs.updateInt("SALES",  0 );
			uprs.updateInt("TOTAL",  0 );
			
			

			uprs.insertRow();
			uprs.beforeFirst();

			System.out.println("Table COFFEES after insertion:");
			 while  (uprs.next()) {
				String s = uprs.getString("COF_NAME");
				 int  sup = uprs.getInt("SUP_ID");
				 float  f = uprs.getFloat("PRICE");
				 int  sales = uprs.getInt("SALES");
				 int  t = uprs.getInt("TOTAL");
				System.out.print(s + "   " + sup + "   " + f + "   ");
				System.out.println(sales + "   " + t);
			}

			uprs.close();
			stmt.close();
			con.close();

		}  catch (SQLException ex) {
			System.err.println("SQLException: " + ex.getMessage());
		}
	}
}
...
Рейтинг: 0 / 0
JDBC
    #33639192
OU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OU
Гость
2 victorp:
В источнике данных (таблице), уникальное поле есть?
...
Рейтинг: 0 / 0
JDBC
    #33639238
victorp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OU2 victorp:
В источнике данных (таблице), уникальное поле есть?

Да, действительно. При добавлении целого поля ID, являющегося
первичным ключем, а следовательно уникальным - все заработало !!!
Большое Вам спасибо OU! Два вечера въехать не мог. Спасибо.
...
Рейтинг: 0 / 0
JDBC
    #33639336
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторМожет это FB JDBC драйвера не позволяют такого.

Что они позволяют, а что нет, надо читать в документации, прилагаемой к JDBC драйверу. Почему бы и не почитать действительно, всё равно не обойтись. Там кстати и был отвечен этот вопрос (вы тут ответили, но неправильно) - update не получится, если не задана какое-нибудь колонка, не допускающая значений null по умолчанию.
Первичный ключ является примером такой колонки, но не только он, любая обычная колонка может иметь атрибут not null, тогда опять облом.

автор Но к сожалению под
рукой нет другого сервера для проверки....

Если СУБД нужна только для изучения JDBC, то можно взять PostgreSQL - всего 20 МБ списывать из Интернет. Разница в том, что для него есть драйвер JDBC версии 3.0, а для Firebird (драйвер Jaybird) - версии 2.0. Это не значит, что PostgreSQL вообще лучше Firebird.
В любом случае надо читать документацию по JDBC драйверу своей СУБД.
...
Рейтинг: 0 / 0
JDBC
    #33640500
Евгений Путилин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Partisan MРазница в том, что для него есть драйвер JDBC версии 3.0, а для Firebird (драйвер Jaybird) - версии 2.0. Это не значит, что PostgreSQL вообще лучше Firebird.
В любом случае надо читать документацию по JDBC драйверу своей СУБД.
Поклеп гнилой поклеп, последнея верся jaybird 2.0(скоро должна быть 2.1) но это не озночает что поддерживается JDBC v2.0 Не на те циферки смотрите :-)
...
Рейтинг: 0 / 0
JDBC
    #33668106
Vesta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Соединяюсь с БД на MS SQL Server 2000 через JDBC. Возникает следующая ошибка, подскажите пожалуйста, как от нее избавиться:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JDBC
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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