请高手指教:有关数据库编程
我用的是Microsoft office 2007桌面型数据库,它的后辍是以.accdb结尾的那种.请先看以下代码:
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();
}
}
当我运行并在面板中输入后,就报这样错:
由于将在索引、 主关键字、或关系中创建重复的值,请求对表的改变没有成功。 改变该字段中的或包含重复数据的字段中的数据,删除索引或重新定义索引以允许重复的值并再试一次。
------解决方案--------------------那是你输入的数据和数据库里的重复了,你查看一下数据库,看看你要登录的数据是否存在了(看主键约束)