先select查询,如果记录不存在,再执行插入操作

解决方案 »

  1.   

    ResultSet st=state.executeUpdate(sSQLi);
           if(st.next())
      

  2.   

    stmt.executeUpdate返回的是受影响的纪录的条数,你这么写肯定不对呀!
      

  3.   

    if(st.next()){      ----------> if(st>=0)  即可!
      

  4.   

    int st=state.executeUpdate(sSQLi);
    这是一条执行更新(插入或删除)语句,返回的是更新(插入或删除)影响的纪录数
    只要判断st > 0就可以知道更新是否被执行而你写的是if(st.next()){代码...}对于一个INT的变量没有这个.next()
    在执行查询的时候返回的才是ResultSet
      

  5.   

    int st=state.executeUpdate(sSQLi);--->int改成ResultSet
      

  6.   

    import java.io.*;
    import java.sql.*;
    import javax.swing.*;public class a3{
     public static void main(String args[]){
      try{ 
      String pass="123";
      String sname="abc";
      String ia="ccc";
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      String su="jdbc:odbc:driver={Microsoft Access DriVer (*.mdb)};DBQ=lga.mdb";
      Connection conn=DriverManager.getConnection(su,"",""); 
      Statement state=conn.createStatement();
      String sSQLi="INSERT INTO User VALUES('"+sname+"','"+pass+"','"+ia+"')";
      int st=state.executeUpdate(sSQLi);
           if(st>0){           
              JOptionPane.showMessageDialog(null,"已经添一条记录","姓名:"+sname+"地址: "+ia+" 密码: "+pass,JOptionPane.INFORMATION_MESSAGE);}
           else{
              JOptionPane.showMessageDialog(null,"添加记录失败!","添加状态:",JOptionPane.INFORMATION_MESSAGE);}  
      state.close();
      conn.close();}
      catch(Exception e){e.printStackTrace();}}
    }