类文件db.java,封装了jdbc的驱动程序、连接数据库、访问USER表的一些操作,供继承它的子类直接使用:
import java.net.*;
import java.sql.*;
import java.lang.*;
import java.io.*;
import java.util.*;public class db implements Serializable
{
     static Connection conn=null;
     //String ConnStr="jdbc:odbc:test";
     Statement stmt=null;
     ResultSet rs=null;
     //db的构造函数
     public db(){};
     
     public static Connection getConnection()
     {
          try
          {
                //注册数据库驱动程序为ACCESS驱动
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                //建立数据库连接
                conn=DriverManager.getConnection("jdbc:odbc:test");
          }          catch(java.lang.ClassNotFoundException e)
          {
                //这样写是为了方便调试程序,出错打印mydb()就知道在什么地方出错了
                System.err.println("mydb():"+e.getMessage());
          }
          catch(java.sql.SQLException e)
          {
                System.err.print("db():"+e.getMessage());
          }
          return conn;
      }
      //关闭数据库连接
      public void closeConnection()
      {
           try
           {   
                if(conn!=null)
                     conn.close();
           }
           catch(java.sql.SQLException e)
           {
                System.err.println("db():"+e.getMessage());
           }
       }
       
      //入口参数为SQL语句,返回ResultSet对象
      public ResultSet executeQuery(String sql)
      {
           rs=null;
           try
           {
                Connection conn1=getConnection();
                if(conn1 !=null)
                {
                     stmt=conn.createStatement();
                     //执行数据库查询操作
                     rs=stmt.executeQuery(sql);
                }
           }
           catch(SQLException ex)
           {
                System.err.println("db.executeQuery:"+ex.getMessage());
           }
           return rs;
      }      //executeUpdate方法用于进行add或者update记录的操作
      //入口参数为SQL语句,成功返回true,否则为false
      
      public boolean executeUpdate(String sql)
      {    
           boolean bupdate=false;
           try
           {
                //建立数据库连接     
                Connection conn1=getConnection();
                if(conn1!=null)
                {
                    stmt=conn.createStatement();
                    int rowCount=stmt.executeUpdate(sql);
                    //如果不成功,bupdate就返回0
                    if(rowCount!=0)
                    bupdate=true;                 }
            }
            catch(SQLException ex)
            {
                  System.err.println("db.executeUpdate:"+ex.getMessage());
            }
            return bupdate;
      }       //toChinese方法用于将一个字符串进行中文处理
      //或者将会是???这样的字符串
      public static String toChinese(String strvalue)
      {
           try
           {
                if(strvalue==null)
                {
                     return null;
                }
                else
                {
                     strvalue=new String(strvalue.getBytes("ISO8859_1"),"GBK");
                     return strvalue;
                }
           }
           catch(Exception e)
           {
               return null;
           }
      }
}

解决方案 »

  1.   

    adduser.java,从db类派生出来,主要进行用户数据的读取以及添加操作,addNewUser()方法用来进行用户数据的添加,checkUser()方法用来检查用户名是否重复,另外还有些set/get方法用来对属性进行处理。
    //import java.jdbc.driver.*;
    import java.sql.*;
    import java.lang.*;
    //adduser由db派生出来,拥有db的成员变量和方法
    public class adduser extends db
    {
         String Username="";
         String Password="";
         String Email="";
         String Homepage="";     public boolean addNewUser()
         {
               boolean boadduser=false;
               try
               {
                    //进行用户注册的记录添加操作,生成sql语句
                    String sSql=new String("insert into user(username,password,email,homepage)");
                    sSql=sSql+" values('"+Username+"','"+Password+"','"+Email+"'+'"+Homepage+"')";
                    //一种调试方法,可以打印出sql语句,以便于查看错误
                    System.out.println(sSql);
                    //调用父类executeUpdate方法,并根据成功以否来设置返回值
                    if(super.executeUpdate(sSql))
                         boadduser=true;
                }
                catch(Exception ex)
                {
                     System.err.println("adduser.addNewUser:"+ex.getMessage());
                }
                finally
                {
                      //无论是否出错,都要返回值
                      return boadduser;
                }
           }
         //checkUser()方法用来检测用户名是否重复,如果重复返回一个false
         public boolean checkUser()
         {
             boolean boadduser=false;
             try
             {
                   //构建sql查询语句
                   String sSql="select * from user where username="+Username+"";
                   //调用父类的executeQuery方法
                   if((super.executeQuery(sSql)).next())
                   {
                        //查询出来的记录集不为空
                        boadduser=false;
                   }
                   else
                   {
                         boadduser=true;
                   }
               }
               catch(Exception ex) 
               {
                    System.err.println("adduser.addNewUser:"+ex.getMessage());
               }
               finally
               {
                     return boadduser;
               }
         }
         //属性的set/get方法,同请求的参数一致
         //属性的用户名Username的get/set方法
         public String getUsername()
         {
              return Username;
         }
         public void setUsername(String newUsername)
         {
              Username=db.toChinese(newUsername);
         }
         public void setPassword(String newPassword)
         {
              Password=newPassword;
         }
         //属性Email的get/set方法
         public String getEmail()
         {
              return Email;
         }
         public void setEmail(String newEmail)
         {
              Email=newEmail;
         }
         //属性主页Homepage的get/set方法
         public String getHomepage()
         {
              return Homepage;
         }
         public void setHomepage(String newHomepage)
         {
              Homepage=newHomepage;
         }
    }
      

  2.   

    测试代码:
    import java.awt.event.*;
    import java.awt.*;
    import java.applet.*;
    public class BeanTest6 extends Applet implements MouseListener
    {
         adduser cBean;
         Button b;
         TextField name;
         TextField password;
         TextField email;
         TextField homepage;
         Button bClose;     public void init()
         {
              //设置布局管理器
              setLayout(new GridLayout(5,2));
              //创建一个adduser实例
              cBean=new adduser();
              b=new Button("Register");
              //给按钮b增加了事件监听者this,即按钮的单击事件将由BeanTest6来处理
              b.addMouseListener(this);
              add(new Label("name:"));
              name=new TextField("",20);
              add(name);
              add(new Label("password"));
              password=new TextField("",20);
              add(password);
              add(new Label("email"));
              email=new TextField("",30);
              add(email);
              add(new Label("homepage"));
              homepage=new TextField("",30);
              add(homepage);
              add(b);
              bClose=new Button("close");
              bClose.addMouseListener(this);
              add(bClose);
         }
        
         public void destroy()
         {
               removeAll();
               if(cBean!=null)
               cBean.closeConnection();
         }
             
         public void mousePressed(MouseEvent e)
         {
              /*单击"Regeister"按钮,就将文本框中输入的用户名、密码、电子邮件、主页储存到user表格的一条新记录中*/
              if(e.getSource()==b)
              {
                    //设置cBean的属性值
                    cBean.setUsername(name.getText());
                    cBean.setPassword(password.getText());
                    cBean.setEmail(email.getText());
                    cBean.setHomepage(homepage.getText());
                    //如果用户名未重复,就将新用户的信息插入到数据库的表格中
                    if(cBean.checkUser())
                          cBean.addNewUser();
               }
               //按关闭按钮,退出应用程序
               else if(e.getSource()==bClose)
               {
                    System.out.println("I'm quitting!");
                    destroy();
                    System.exit(0);
               }
          }
          public void mouseReleased(MouseEvent e){};
          public void mouseEntered(MouseEvent e){};
          public void mouseExited(MouseEvent e){};
          public void mouseClicked(MouseEvent e){};
          //定义了main方法,使得applet也可以作为应用程序独立运行
          public static void main(String args[])
          {
                Frame f=new Frame("Beantest");
                BeanTest6 bTest=new BeanTest6();
                bTest.init();
                bTest.start();
                f.add("Center",bTest);
                f.setSize(300,300);
                f.show();
          }
               
          public String getAppletInfo()
          {
                return"A simple bean test program.";
          }
    }