2014-07-10 50 views
1

我想知道如何從texfile導入內容到數據庫(javaDB)。這是我有的代碼,但是我在執行時收到一個錯誤。我也想說明這個表的主鍵是自動遞增的。如何將文本文件導入到javaDB中?

CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE 
(null,'EXPENDITURE','C:\Users\Me\Desktop\textforimport.txt',null,null,null,0); 
// This is my import code 

//這是我的錯誤

Executed successfully in 0.003 s. 
Line 1, column 1 

Error code 30000, SQL state 38000: The exception 'java.sql.SQLException: 
Attempt to modify an identity column 'EXPENDITURE_ID'.' was thrown while evaluating an expression. 

Error code 99999, SQL state 42Z23: Attempt to modify an identity column 'EXPENDITURE_ID'. 
Line 4, column 1 

Execution finished after 0.003 s, 1 error(s) occurred. 

//下面的代碼來創建表

create table Expenditure (
Expenditure_ID integer not null primary key generated always as identity (start with 1,increment by 1), 
Expenditure_Description varchar (75) not null, 
Expense double not null, 
Expense_Date date not null 
); 

現在我沒有在java中的專家,但我不知道是否有人打電話幫我這個。我會很感激。謝謝

回答

0

我的猜測是它是一個簡單的SQL問題,而不是java問題。

由於列Expenditure_ID被稱爲「總是產生身份主鍵」,JavaDB之外將自動生成它爲您創建。而且,當您嘗試操作標識列時,您將收到嘗試修改標識列錯誤。

你可以試試方法2:

1)從textforimport.txt,列刪除/數據Expenditure_ID。剛剛進口支出_描述,費用費用_日期。正如我所說,javaDB將爲每一行分配一個ID。

2)如果您需要定義自己Expenditure_ID,改變在支出表Expenditure_ID列。嘗試僅使用「整數非空」(不包含主鍵關鍵字)創建它。

2

Expenditure_ID的聲明只是更改爲「生成的默認身份」

時生成默認只會增加 和使用上插入時的默認值的標識列沒有明確的價值是 給出。與GENERATED ALWAYS列不同,您可以在要使用的插入語句中指定特定的 值,而不是生成的 默認值。 source