CREATE TABLE M_NAMES (
ID INT IDENTITY(1, 1), --ID
CLASS_CD TINYINT NOT NULL, --暘椶
NAME_CD SMALLINT NOT NULL, --嬫暘
FULL_NAME NVARCHAR(60), --柤徧
SHORT_NM1 NVARCHAR(10), --棯徧1
SHORT_NM2 NVARCHAR(20), --棯徧2
REMARK1 NVARCHAR(40), --旛峫1
REMARK2 NVARCHAR(40), --旛峫2
DIV1 NVARCHAR(2), --嬫暘1
DIV2 NVARCHAR(3), --嬫暘2
DIV3 NVARCHAR(4), --嬫暘3
INS_DATE DATETIME, --搊榐擔
UPD_DATE DATETIME, --峏怴擔
VERSION INT NOT NULL, --僶乕僕儑儞 CONSTRAINT PK_NAMES PRIMARY KEY (ID),
CONSTRAINT U_NAMES UNIQUE (CLASS_CD,NAME_CD)
)
CREATE INDEX INDEX_NAME ON M_NAMES(CLASS_CD,NAME_CD)
时候报错 :违反主键的PK_NAMES的约束。对象' dbo.M_NAMES “你不能插入重复键。
我是重tet文件里读出一条记录插入数据库的。怎么样修改者张表才能正确把数据正确的插入数据库啊。
解决方案 »
- 老板突然问你:做这个会不会烦?
- 谁有java web整合开发王者归来
- Junit测试 struts中action的某一个方法
- 今天去复旦大学某研究所面试,题目大家来做一下
- "上下左右"我都设了,他依旧是乱码?Why? 进来聊聊。
- hibernate 处理多对多是不是能力有点不够?
- 500分求助,java文字游戏源码!
- jbulider+weblogic 联姻问题。在线等。
- 关于取得系统参数问题
- 要用Java和XML了,请大家推荐两本好书,谢谢!
- 在开发环境为JBoss+Eclipse上没有问题,但是部署到WAS环境上后出现一个难以解决的问题,望大神指教
- Spring MVC HTTP ERROR 404
text文件中ID是 123,那么你写数据库时,ID就改为:80000123
public class DataTest {
BufferedReader br = null;
Connection conn = null;
PreparedStatement pstmt=null;
public static void main(String []args){
new DataTest().test("filepath");
}
public void test(String filePath){
try {
conn = ImportData.getConnection();
String sql = "insert into M_NAMES vlaues(?,?,?,?,?,?,?,?,?)";
pstmt = ImportData.prestmt(conn, sql);
br=new BufferedReader(new FileReader(filePath));
String str = br.readLine();
String s[] = str.split(",");
int i = 0 ;
while(str!=null){
++i;
pstmt.setString(1, s[0]);
pstmt.setString(2, s[1]);
pstmt.setString(3, s[2]);
pstmt.setString(4, s[3]);
pstmt.setString(5, s[4]);
pstmt.setString(6, s[5]);
pstmt.setString(7, s[6]);
pstmt.setString(8, s[7]);
pstmt.setString(9, s[8]);
pstmt.setString(10, s[9]);
pstmt.addBatch();
if(i==100){
i=0;
pstmt.executeBatch();
conn.commit();
}
str = br.readLine();
}
if(i>0){
pstmt.executeBatch();
conn.commit();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ImportData.close(conn, pstmt, null);
}
}
}
JAVA 代码应该没有错吧。
Java代码没啥,但SQL有问题,这种Insert写法会完全不清楚字段是怎么匹配而引发各种灵异问题,所以把字段名全部列出来,顺序注意保持跟参数的一致:String sql = "insert into M_NAMES(CLASS_CD, NAME_CD, ......) vlaues(?,?,?,?,?,?,?,?,?)";
ID反正也是自增的。但这样要考虑下,与这个表相关的表是否与这个ID有关联的数据或者外键
修改id属性 改成否 如图
按照M_NAMES 表结构应该是13列。不算 ID 2.DATETIME类型,null的时候,用setString,有点问题。最好用setNull
楼主啊,我说了SQL有问题,你还是修改下吧
还有去了过后怎么在加这个自增长添加上去。
1.你如果想直接插入可以采用
SET IDENTITY_INSERT yourtablename ON
go
2.关闭
SET IDENTITY_INSERT yourtablename OFF
go