日期:2014-05-20  浏览次数:20712 次

有关数据库编程,请高手指点,感激不尽!
下面是一个关于数据库编程:我用的Microsoft2007数据库,数据库里有两列,列名分别为ID,user_name,当我执行下列代码时,报了这样一个错:

   “由于将在索引、 主关键字、或关系中创建重复的值,请求对表的改变没有成功。 改变该字段中的或包含重复数据的字段中的数据,删除索引或重新定义索引以允许重复的值并再试一次。”

     我不知道是什么意思,也就不知从哪里改,请高手指点!感激不尽!
package package2;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;

public class Add implements ActionListener{

Frame f;
Label l1,l2;
TextField tf1,tf2;
Button b1,b2;
Panel p1,p2,p3;
Connection cc;
DriverManager dr;
Statement st;
Add()
{
f=new Frame();
p1=new Panel();
p2=new Panel();
p3=new Panel();
l1=new Label("user_id");
l2=new Label("user_name");
b1=new Button("Confirm");
b2=new Button("Cancel");
tf1=new TextField();
tf2=new TextField();
f.setLayout(new GridLayout(3,1));
p1.add(l1);
p1.add(tf1);
p2.add(l2);
p2.add(tf2);
p3.add(b1);
p3.add(b2);
f.add(p1);
f.add(p2);
f.add(p3);
f.setSize(250,300);
f.setResizable(false);
f.setVisible(true);
b1.addActionListener(this);
b2.addActionListener(this);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public void insert() throws SQLException
{
String ID=tf1.getText().trim();
String user_name=tf2.getText().trim();
String sql1="insert into table1 values('"+ID+"','"+user_name+"')";
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
cc=DriverManager.getConnection("jdbc:odbc:two");
st=cc.createStatement();
int i=st.executeUpdate(sql1);
 
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==b1)
{
try {
this.insert();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
public static void main(String [] args)
{
new Add();
}
}

------解决方案--------------------
你数据库中的ID是主键吧? 你看看数据库里面是不是已经有一个和你要插入的ID相同的记录了?