【问题标题】:How to insert values along with auto generated field in msaccess如何在 ms 访问中插入值以及自动生成的字段
【发布时间】:2015-10-17 06:20:48
【问题描述】:

我在 Netbeans 中创建了一个有 8 列的 jForm。我想在运行时插入 2 到 7 个字段的值,并且第一个字段值应该通过数据库自动递增。 我在 ms 访问中创建了一个表,其中第一个字段具有自动编号数据类型。

当我编写插入查询时,如果我取 7 个问号,并从 2 中传递值,则会显示“数据库字段值不同”的错误。 如何做到这一点,第一个字段是自动递增的,下一个字段将插入值.. 这是我的代码...

Connection myconnection= null;
        String mydriver= "sun.jdbc.odbc.JdbcOdbcDriver";
        if((jTextField2.getText().length()==0)||(jTextArea1.getText().length()==0)||(jRadioButton1.getText().length()==0)||(jRadioButton2.getText().length()==0)||(jFormattedTextField1.getText().length()==0)||(jTextField3.getText().length()==0)||(jComboBox1.getSelectedIndex()==0)||(jFormattedTextField3.getText().length()==0)) {
            JOptionPane.showMessageDialog(rootPane, "Please fill all the details");
        }
        else
        {
            try
            {
                Class.forName(mydriver);
                myconnection=DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq= C:\\Documents and Settings\\Administrator\\My Documents\\NetBeansProjects\\DAV REHABILITATION\\Davdb.accdb; Uid=Admin; Pwd=;");
                try
                {
                    String myquery= "insert into Patients values(?,?,?,?,?,?,?)";
                    PreparedStatement mystatement= myconnection.prepareStatement(myquery);
                    mystatement.setString(2,jTextField2.getText());
                    mystatement.setString(3,jTextArea1.getText());
                    if(jRadioButton1.isSelected()) {
                        mystatement.setString(4, "Male");
                    } else if(jRadioButton2.isSelected()) {
                        mystatement.setString(4, "Female");
                    }
                    mystatement.setString(5, jFormattedTextField1.getText());
                    mystatement.setString(6, jTextField3.getText());
                    mystatement.setString(7, jComboBox1.getSelectedItem().toString());
                    mystatement.setString(8, jFormattedTextField3.getText());
                    mystatement.executeUpdate();
                    JOptionPane.showMessageDialog(rootPane,"Data Saved");
                    mainform obj=new mainform();
                    this.setVisible(false);
                    obj.setVisible(true);

                } 
             catch (Exception e)
             {
                    JOptionPane.showMessageDialog(rootPane, "Error in Query. " + e.getMessage());
                }


        }
            catch(Exception e)
            {
                JOptionPane.showMessageDialog(rootPane, " Error Occured.Connection wrong" + e.getMessage());
            }


        }



    }             

【问题讨论】:

  • 你想只插入2个值吗?
  • 指定要插入的字段名:insert into Patients(field2,field3,...

标签: java netbeans


【解决方案1】:

您的表格总共包含8 列。

您的查询错误

String myquery= "insert into Patients values(?,?,?,?,?,?,?)";//only 7 indexes

您必须写respective column names,因为您没有在此处输入所有列值。

   String myquery= "insert into Patients(col1,col2,col3,col4,col5,col6,col7) values(?,?,?,?,?,?,?)";

由于您只将值传递给7 列,并且您没有向表中的第一列输入值。 这里col1col2 等是您要插入其值的表列名称。

【讨论】:

【解决方案2】:

如何做到这一点,第一个字段自动递增,下一个字段将插入值

您无需指定要插入的列(以及顺序)

String myquery= "insert into Patients (column1, column2, column3, column4, column5, column6) values(?,?,?,?,?,?,?)";

mystatement.setString(1,jTextField2.getText());
mystatement.setString(2,jTextArea1.getText());
if(jRadioButton1.isSelected()) {
    mystatement.setString(3, "Male");
} else if(jRadioButton2.isSelected()) {
    mystatement.setString(3, "Female");
}
mystatement.setString(4, jFormattedTextField1.getText());
mystatement.setString(5, jTextField3.getText());
mystatement.setString(6, jComboBox1.getSelectedItem().toString());
mystatement.setString(7, jFormattedTextField3.getText());
mystatement.executeUpdate();

columnX 是列的名称

setX 方法中使用的数字表示查询中占位符的值

详情请见The SQL INSERT INTO statement

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多