本节就是来说说这个用户注册界面如何用java实现。

重拾JAVA之WinForm实战之(二)_微软

大家一看就是个很简单的功能,首先我们要确保我们sqlServer能够被连接

重拾JAVA之WinForm实战之(二)_微软_02

打开sqlServer2008配置管理器,按照如下设置

重拾JAVA之WinForm实战之(二)_JAVA_03

OK,接下来我们去微软的网站上下载JDBC Driver2.0

http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=2505

下载下来以后,解压缩,将sqljdbc4.jar引用到项目下

重拾JAVA之WinForm实战之(二)_JAVA_04

引用后的工程如下

重拾JAVA之WinForm实战之(二)_JAVA_05

OK,我们现在写一个JDBC的工具类,先来简单点的,以后继续做的时候再扩展。

package Utility;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCSqlHelper {
    private static Connection con = null;
    private static Statement st = null;
    private static ResultSet rs = null;
    private static void dbconn() {
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        } catch (ClassNotFoundException e1) {
            e1.printStackTrace();
        }
        String conURL = "jdbc:sqlserver://localhost:1433;databaseName=Bonus";
        try {
            con = DriverManager.getConnection(conURL, "sa", "123456");
            st = con.createStatement();
        } catch (SQLException e) {
            // TODO 自动生成 catch 块 e.printStackTrace();
        }
    }
    private static void dbclose() {
        try {
            st.close();
            con.close();
        } catch (SQLException e) {
            // TODO 自动生成 catch 块
            e.printStackTrace();
        }
        st = null;
        con = null;
    }
    public static ResultSet query(String sql) {
        dbconn();
        try {
            rs = st.executeQuery(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return rs;
    }
    public static int update(String sql) {
        int i = 0;
        try {
            dbconn();
            i = st.executeUpdate(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            dbclose();
        }
        return i;
    }
}

这个就不做解释了,OK万事具备,现在我们看看界面的实现吧。

首先是验证,用户名必须由字母和数字组成,密码也必须由字母和数字组成。并且密码和重复密码必须一致。

private void RegisterUser() {
        String userNo = txtUserNo.getText().trim();
        String pwd = txtPwd.getText().toString().trim();
        String rePwd = txtRePwd.getText().toString().trim();
        if (!CheckInput(userNo, pwd, rePwd)) {
            return;
        }
        StringBuffer strBuffer = new StringBuffer();
        strBuffer.append("INSERT INTO dbo.[User]");
        strBuffer.append("(UseNo,Pwd,IsAdmin) ");
        strBuffer.append("VALUES('" + userNo + "','" + pwd + "','"
                + (chkRole.isSelected() ? "1" : "0") + "')");
        try {
            JDBCSqlHelper.update(strBuffer.toString());
            MessageHelper.ShowMessage("注册成功!", "提示");
            this.WindowClose();
        } catch (Exception ex) {
            ex.printStackTrace();
        }          
    }

首先是check Input,我们看一下

private boolean CheckInput(String userNo, String pwd, String rePwd) {
        if (userNo.isEmpty()) {
            MessageHelper.ShowMessage("请输入同户名!", "用户名");
            return false;
        }
        if (pwd.isEmpty()) {
            MessageHelper.ShowMessage("请输入密码!", "密码");
            return false;
        }
        if (rePwd.isEmpty()) {
            MessageHelper.ShowMessage("请输入重复密码!", "重复密码");
            return false;
        }
        boolean isMatch=userNo.matches("^[A-Za-z0-9]+$");
        if (!isMatch) {
            MessageHelper.ShowMessage("用户名只能由字母和数字组成!", "用户名");
            return false;
        }
                                                
        isMatch = pwd.matches("^[A-Za-z0-9]+$");
        if (!isMatch) {
            MessageHelper.ShowMessage("密码只能由字母和数字组成!", "密码");
            return false;
        }
        if (!pwd.equals(rePwd)) {
            MessageHelper.ShowMessage("密码和重复密码不一致!", "重复密码");
            return false;
        }
        return true;
    }

OK,上面就是check input的逻辑,不做解释,很简单。OK,验证通过之后,数据保存进sqlserver。

重拾JAVA之WinForm实战之(二)_JAVA_06

好了最后实现一下菜单事件,让他从菜单弹出