我在程序中创建了一个表:
String query = "create table student ( " + 
" snumber int ," +
" sname varchar(20)  ," + 
" sgender varchar(4)  ," +
" sage int ," + 
" smath double  ," +
" senglish double ," + 
" schinese double ," + 
" sphysical double ," +
" schemistry double ," +
" spoint double , " +
"  Primary key ( snumber )" +
")" ;  表很简单,snumber 是主键。
但是在添加数据的时候,数据库没有控制重复的主键数据,仍然添加相同主键的数据,问问可能是什么问题。
添加数据命令:
String order = "insert into student (snumber,sname,sgender,sage,smath,senglish,schinese,sphysical,schemistry,spoint) values( " +
getstd.number + "," + 
"'" + getstd.name + "' , " + 
"'" + getstd.gender + "' , " + 
getstd.age + " , " + 
getstd.math + " , " + 
getstd.english + " , " + 
getstd.chinese + " , " + 
getstd.physical +  " , " + 
getstd.chemistry + ", " + 
(double)((int)(getstd.mathPoint() * 1000))/1000  +
" )" ;

解决方案 »

  1.   


    String query = "create table student ( " +  
    " snumber int primary key," +           //加上主键约束primary key
    " sname varchar(20) ," +  
    " sgender varchar(4) ," +
    " sage int ," +  
    " smath double ," +
    " senglish double ," +  
    " schinese double ," +  
    " sphysical double ," +
    " schemistry double ," +
    " spoint double , " +
    " Primary key ( snumber )" +
    ")" ;
     
      

  2.   

    那肯定就是主键没有设置好了,检查一下数据库把,不然就像楼上重新建下表,或者在插入数据时通过程序检查snumber字段(不推荐)。
      

  3.   

    String query = "create table student ( " +  
    " snumber int ," +
    " sname varchar(20) ," +  
    " sgender varchar(4) ," +
    " sage int ," +  
    " smath double ," +
    " senglish double ," +  
    " schinese double ," +  
    " sphysical double ," +
    " schemistry double ," +
    " spoint double , " +
    " Primary key ( snumber ), UNIQUE KEY `idx_snumber` (`snumber`)" +
    ")" ;
      

  4.   

    应该是主键没添加成功。可能你的写法有误?如果主键添加成功 违反主键约束会提示报错的。
     用这种试试 snumber int primary key,
    把 Primary key (snumber) 这个删了。
      

  5.   


    我有学过SQL server 的语言,和access的有细小差别, "snumber int primary key" 会报错。
      

  6.   


    JDriver = "sun.jdbc.odbc.JdbcOdbcDriver"
    我的驱动, 添加 "snumber int primary key"     报:无效操作。
      

  7.   


    我用 MS access 打开的时候,显示的确是是 snumber 前面有钥匙,代表主键。
      

  8.   

    这种写法是mysql的。i'm sorry
      

  9.   


    我用了unique , "constraint id_number unique (snumber) "
    编译通过,不过还是没有实现键约束。
      

  10.   

    LZ把建表和主键的语句分开试试。参照下面的首先对 id 这个列,增加一个 NOT NULL 约束,然后再设置为主键。1> ALTER TABLE test_tab
    2>   ALTER COLUMN id INT NOT NULL;1> ALTER TABLE test_tab
    2>    ADD CONSTRAINT pk_test_tab PRIMARY KEY(id);
     
      

  11.   


    还是不好使,最后用自己控制和改用 SQL server 搞定,谢谢大家。