我想知道如何将文本文件中的内容导入数据库(javaDB).This是我的代码,但我在执行时收到错误。我还想声明这个表的主键是自动递增的。
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专家,但我想知道是否有人打电话来帮助我这一点。我会很感激的。谢谢
发布于 2015-02-14 01:34:22
只需将Expenditure_ID的声明更改为“默认情况下生成为身份”,
缺省生成的identity列只有在未给出显式值的情况下才会递增并在插入时使用默认值。与生成的ALWAYS列不同,您可以在插入语句中指定要使用的特定值,而不是生成的默认值。source
发布于 2014-07-11 04:56:59
我的猜测是这是一个简单的SQL问题,而不是java问题。
由于列Expenditure_ID被创建为“主键总是作为identity生成”,因此javaDB将自动为您生成它。而且,当您尝试操作标识列时,您将收到尝试修改标识列错误。
您可以尝试两种方法:
1)从textforimport.txt,中删除列/数据Expenditure_ID.只需导入Expenditure_Description,Expense和Expense_Date.正如我所说的,javaDB将为每一行分配一个ID。
或
2)如果您需要自己定义Expenditure_ID,请修改支出表中的Expenditure_ID列。试着只用"integer not null“(没有主键)来创建它。
https://stackoverflow.com/questions/24682233
复制相似问题