Ошибка MS SQLServer jdbc ReadedStatementJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Ошибка MS SQLServer jdbc ReadedStatement

Сообщение Anonymous »

Я хочу вставить строки в таблицу со 118 столбцами.
Я считаю, что это отлично работает с mssql-jdbc-8.2.2.jre8.jar, но, к сожалению, с любой более поздней проблемой (я тестировал все версии 9.2.2.jre8.jar). от 1 до 12.8.1 ) возвращает java.sql.BatchUpdateException с примечанием, что длина столбца в позиции 118. недействительна. Это происходит только в том случае, если столбец 118. имеет значение VARCHAR или NVARCHAR. Нет ошибок в случае FLOAT или других числовых типов. Поэтому, если кто-то уже сталкивался с этим или знает какое-либо решение, пожалуйста, дайте мне знать. Вот команда моего ReadedStatement:
insert into tt
(CUSTOMER_ID,Value_date,_default,J_termek1,J_termek2,J_termek1_appl_pont,J_termek1_beh_pont,J_termek2_appl_pont,J_termek2_beh_pont,J_t
ermek1_appl_intercept,J_termek1_appl_beta,J_termek1_beh_intercept,J_termek1_beh_beta,J_t
ermek1_appl_weight,J_termek1_beh_weight,J_REL_def_STD,J_macro_correction,J_termek2_appl_intercept,J_termek2_appl_beta,J_termek2_beh_in
tercept,J_termek2_beh_beta,J_termek2_appl_weight,J_termek2_beh_weight,J_termek1_weight,J_termek2_weight,L_termek1,L_
termek2,L_termek1_appl_pont,L_termek1_beh_pont,L_termek2_appl_pont,L_termek2_beh_pont,L_termek1_appl_intercept,L_termek1_appl_beta,L_t
ermek1_beh_intercept,L_termek1_beh_beta,L_termek1_appl_weight,L_termek1_beh_weight,L_REL_def_STD,L_macro_correction,
L_termek2_appl_intercept,L_termek2_appl_beta,L_termek2_beh_intercept,L_termek2_beh_beta,L_termek2_appl_weight,L_termek2_beh_weight,L_t
ermek1_weight,L_termek2_weight,S_termek1,S_termek2,S_termek1_appl_pont,S_termek1_beh_pont,S_termek2_appl_pont,S_term
ek2_beh_pont,S_termek1_appl_intercept,S_termek1_appl_beta,S_termek1_beh_intercept,S_termek1_beh_beta,S_termek1_appl_weight,S_termek1_b
eh_weight,S_REL_def_STD,S_macro_correction,S_termek2_appl_intercept,S_termek2_appl_beta,S_termek2_beh_intercept,S_te
rmek2_beh_beta,S_termek2_appl_weight,S_termek2_beh_weight,S_termek1_weight,S_termek2_weight,O_termek1,O_termek2,O_termek1_appl_pont,O_
termek1_beh_pont,O_termek2_appl_pont,O_termek2_beh_pont,O_termek1_appl_intercept,O_termek1_appl_beta,O_termek1_beh_i
ntercept,O_termek1_beh_beta,O_termek1_appl_weight,O_termek1_beh_weight,O_REL_def_STD,O_macro_correction,O_termek2_appl_intercept,O_ter
mek2_appl_beta,O_termek2_beh_intercept,O_termek2_beh_beta,O_termek2_appl_weight,O_termek2_beh_weight,O_termek1_weigh
t,O_termek2_weight,H_termek1,H_termek2,H_termek1_appl_pont,H_termek1_beh_pont,H_termek2_appl_pont,H_termek2_beh_pont,H_termek1_appl_in
tercept,H_termek1_appl_beta,H_termek1_beh_intercept,H_termek1_beh_beta,H_termek1_appl_weight,H_termek1_beh_weight,H_
REL_def_STD,H_macro_correction,H_termek2_appl_intercept,H_termek2_appl_beta,H_termek2_beh_intercept,H_termek2_beh_beta,H_termek2_appl_
weight,H_termek2_beh_weight,H_termek1_weight,H_termek2_weight,H_atlag_pd,spare3,BEH_PD,behpd,txt1) VALUES
(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)

Я безуспешно пытался использовать NVARCHAR вместо VARCHAR. Я также попытался добавить еще один столбец VARCHAR во вставку (перед этим я создал новую таблицу с этим дополнительным столбцом), и в этом случае в сообщении об ошибке говорилось, что ошибка происходит в столбце 119. (новый). Трассировка стека:
java.sql.BatchUpdateException: A rendszer érvénytelen oszlophosszt kapott a BCP-ügyféltől a következő oszlopazonosítóhoz: 118.
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeBatch(SQLServerPreparedStatement.java:2042)
at SAS2SQL.writeToOutput(SAS2SQL.java:1098)
at SAS2SQL.main(SAS2SQL.java:121)

Сообщение об ошибке отображается на венгерском языке. На английском языке это:

Система получила от клиента BCP неверную длину столбца для следующего идентификатора столбца: 118
< /blockquote>
Часть кода, организующая вставку:
String str = stdin.readLine();
while (str != null) {
counter++;
//log(str);
split(str);
//log(arrayToText(elemek));
int k;
for (int j = 0; j < fields.length; j++) {
tip=fieldtypes[j];
textelem=elemek[j];
k=j+1;
if (textelem==null)pstmt.setString(k,null);
else {
if (tip==Types.VARCHAR || tip==Types.NVARCHAR ) {
pstmt.setString(k, textelem);

//if (insertedRows

Подробнее здесь: https://stackoverflow.com/questions/792 ... tement-bug
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»