我把几个重要的部分 分隔出来让各位高手帮忙第一部分连接等 void DBConnect(String url){
    try {
      String driver ="sun.jdbc.odbc.JdbcOdbcDriver";
      Class.forName(driver);
      System.out.println("driver:"+driver);
      con =DriverManager.getConnection (url, "", "");
      System.out.println("CONNECTED TO   ---> "+ url);
                }catch (SQLException e) {
                      e.printStackTrace();
            } catch (ClassNotFoundException e) {
                      e.printStackTrace();
            }
      }      void DBClose(){
                try{
                con.close();
                }catch(SQLException e)
            {
                }
        }
//加载语句
        ResultSet queryDB(String qry){
                try{
                  ResultSet rs=null;
                 Statement stmt= con.createStatement ();
                 //rs= stmt.executeUpdate(qry);
                 rs= stmt.executeQuery(qry);
               //System.out.println("EXECUTED QUERY ---> " + qry);
        }catch(SQLException e2){
                 }
                 return rs;
}        int queryDB2(String qry){
          int count=0;
          try{
              Statement stmt= con.createStatement ();
              count= stmt.executeUpdate(qry);
               //System.out.println("EXECUTED QUERY ---> " + qry);
        }catch(SQLException e2){
                 }
                 return count;
       }
第二部分
//到表中查询
       String qry1="Select 姓名 地址 密码  from publishers where 姓名=? 地址=? 密码=?";
       queryDB(qry1);
//建立PreparedStatement 
PreparedStatement qry1QueryStat=con.prepareStatement(qry1); qry1QueryStat.setString(1,t1);
qry1QueryStat.setString(2,t2);
qry1QueryStat.setString(3,t3);//1,2,3是的几个宿主变量
qry1QueryStat.setString(4,t4); //ResultSet rs=qry1QueryStat.executeQuery();//得到结果        //String qry1="Select 姓名='"+t1+"'年龄'"+t2+"'地址='"+t3+"'密码='"+t4+"'from publishers";
        //ResultSet qry1=queryDB("Select * from publishers where 姓名='"+t1+"' and 年龄='"+t2+"' and 地址='"+t3+"' and 密码='"+t4+"'");
        //queryDB(qry1);
//这是控制重复的地方
        if(rs.next())
        {
          System.out.println("输入内容与表中重复");
          //TiSh ti=new TiSh();
        }
//这里是把文本框的内容加入到表中
        else
        {
//加入表中的语句
          String qry2="INSERT INTO publishers(姓名,年龄,地址,密码) VALUES('"+t1+"','"+t2+"','"+t3+"','"+t4+"')";
          queryDB2(qry2);
        }
      }
      catch(SQLException e1)
      {      }

解决方案 »

  1.   

    第二部分
    //到表中查询
           String qry1="Select 姓名 地址 密码  from publishers where 姓名=? 地址=? 密码=?";
    *****************************************
    改为:
              String qry1="Select 姓名 地址 密码  from publishers where 姓名='"+this.textField1+"' and 地址='"+this.textField2+"' and '"+this.textField3+"';然后执行这个SQL语句,如果表单的值和数据库完全相同,这个SQL会查询出一个NULL.如果是NULL:
      if(...==null)
    {
        String sql02="insert into...";
    }
      

  2.   

    这里费解地几个地方:1.AddRowFrame应该是一个BEAN吧,那么其中的字段应该是private String textField1;private String textField2;等等;并且对应地有:public setTextField1();
    public String getTextField2();等等;你那个TextField类是什么我没有用过,呵呵,见鬼2.    label1.setText("姓名");
        label2.setText("年龄");这是怎么回事?在BEAN中给LABEL字段赋值?BEAN不应该由你手工赋值的呀.
    3.象你这么简单的一个功能,除了定义BEAN本身的字段之外,另外写一个方法,这个方法里面有5到6行语句就够了(而且if()这样的也算是一行),你出现了这么多语句,如果超过10行,完全违背了BEAN的使用规则,你重新找实例看看吧.这个BEAN你整个都不要了.重新去找到MVC模式的实例看看,这些实例我不提供,恕罪
      

  3.   

    sql 语句可能有问题,你在看一下INSERT INTO publishers(姓名,年龄,地址,密码) VALUES('"+t1+"','"+t2+"','"+t3+"','"+t4+"')是否妥当,我感觉是SQL的问题。
    另://这是控制重复的地方
            if(rs.next())
            {
              System.out.println("输入内容与表中重复");
              //TiSh ti=new TiSh();
            }
    这个什么意思?我没看懂。resultset.next是做了比较了吗?
    用楼上的这位朋友的方法试试吧,不过说老实话,你对数据库做的操作太多,一行数据就要读取数据库数次,效率不太高,呵呵。
      

  4.   

    想问一下,你是用什么作数据库的,还有你那句sql语句好像不对吧,select后面的字段中间怎么会没有间隔符号那举个例子应该是select a,b from tableone where c="faf" and d="fafaf"
    这样才可以。当然我这里的c和d字段都是字符串的。你可以先到后台数据库验证一下你所写的sql语句的正确性,我看你的connecting应该是没有什么问题的
      

  5.   

    同意
    chenxin790311(逍遥鱼)
    SQL改改吧
      

  6.   

    if(rs.next())
            {
              System.out.println("输入内容与表中重复");
              //TiSh ti=new TiSh();
            }这个判断中间还应该加一个字段的判断,不过一般这个字段重复的判断应该交给数据库来处理的。
      

  7.   

    你个煞笔,申请了几个号!
    就他妈知道倒分!有个屁用!bruce1981(过客) 
    Bruce_1981(许真)
    xuzhen1980(为中国软件振兴而努力)都是那个煞笔"许真",别不承认!
    看下面的贴子,就知道他有没有倒分!
    http://expert.csdn.net/Expert/topic/1483/1483350.xml?temp=1.162291E-05
      

  8.   

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.sql.*;public class test extends JFrame
    {
      Connection con;
      String url = "jdbc:odbc:Xu";
      ResultSet rs;
      JPanel contentPane;
      TextField textField1 = new TextField(10);
      TextField textField2 = new TextField(10);
      TextField textField3 = new TextField(10);
      TextField textField4 = new TextField(10);
      private Label label1 = new Label();
      private Label label2 = new Label();
      private Label label3 = new Label();
      private Label label4 = new Label();
      private Button button1 = new Button();
      private Button button2 = new Button();
      FlowLayout lay=new FlowLayout();
      public test(){
     Container c=getContentPane();
         c.setLayout(lay);
         setTitle("Frame Title");
         label1.setText("姓名");
         label2.setText("年龄");
         label3.setText("地址");
         label4.setText("密码");
         button1.setLabel("添加");
         button1.addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(ActionEvent e) {
            button1_actionPerformed(e);
          }
        });
        button2.setLabel("取消");
        button2.addActionListener(new ActionListener() {
                 public void actionPerformed(ActionEvent e) {
                     button2_actionPerformed(e);
               }
           });
        Panel cc=new Panel();
    Panel c1=new Panel();
    Panel c2=new Panel();
    Panel c3=new Panel();
        Panel c4=new Panel();
         cc.setLayout(new GridLayout(4,1));
    c1.setLayout(new GridLayout(1,4));
    c2.setLayout(new GridLayout(1,4));
    c3.setLayout(new GridLayout(1,4));
    cc.add(c1);
    cc.add(c2);
    cc.add(c4);
    cc.add(c3);
    c1.add(label1);
        c1.add(label2);
        c1.add(label3);
        c1.add(label4);
    c2.add(textField1);
        c2.add(textField2);
        c2.add(textField3);
        c2.add(textField4);
    c3.add(new Label());
    c3.add(button1);
        c3.add(button2);
    c3.add(new Label());
    c.add(cc);

      DBConnect(url);
      }
     
      
         void DBConnect(String url){
    try {
           // Load the Driver
          
           String driver ="sun.jdbc.odbc.JdbcOdbcDriver";
           Class.forName(driver);
          System.out.println("LOADED DRIVER  ---> " + driver);
           con =
           DriverManager.getConnection (url, "", "");
           System.out.println("CONNECTED TO   ---> "+ url);
    }catch (SQLException e) {
           e.printStackTrace();
         } catch (ClassNotFoundException e) {
           e.printStackTrace();
         }
    }
    void DBClose(){
    try{
    con.close();
    }catch(SQLException e)
        {
    }
    }
    ResultSet queryDB(String qry){
    ResultSet rs=null;

    try{
     Statement stmt= con.createStatement ();
            // Execute query using Statement, receive the ResultSet
               rs= stmt.executeQuery(qry);
            System.out.println("EXECUTED QUERY ---> " + qry);
            }catch(SQLException e2){
     }
     return rs;
    }
    int updateDB(String updstr){
        int count=0;
         try{
            Statement stmt= con.createStatement ();
            count= stmt.executeUpdate(updstr);
            }catch(SQLException e2){return 0;}
         return count;
        }
        void button1_actionPerformed(ActionEvent e) {
        
    String t1=textField1.getText().trim();
        String t2=textField2.getText().trim();
        String t3=textField3.getText().trim();
        String t4=textField4.getText().trim();
    //不可以为空
       if(t1.equals("")||t2.equals("")||t3.equals("")||t4.equals(""))
        {
         System.out.println("输入内容不能为空");
        }
        else
        {
          try
          {
    //到表中查询
           String qry1="Select * from publishers where 姓名='"+t1+"'";
    rs=queryDB(qry1);
    if(rs.next())
            {
              System.out.println("输入姓名与表中重复");
            }
    //这里是把文本框的内容加入到表中
            else
            {
    //加入表中的语句
            String updstr="INSERT INTO publishers(姓名,年龄,地址,密码) VALUES('"+t1+"','"+t2+"','"+t3+"','"+t4+"')";
      updateDB(updstr);
            }
          }
          catch(Exception e1)
          {
             DBClose();
          }
        }
      }
       void button2_actionPerformed(ActionEvent e) {
        textField1.setText("");
    textField2.setText("");
    textField3.setText("");
    textField4.setText("");  }
     public static void main(String[] args)
      {
       test frame=new test();
      frame.setSize(600,600);
      frame.setVisible(true);
       //frame.setVisible(true);
      }}     这是他给我的代码