java连接SQL server2012验证用户登录信息

java连接SQL server2012验证用户信息程序终于运行成功。特别感谢一位博主的分享(http://www.cnblogs.com/zeroingToOne/p/7944300.html

注释掉关闭数据库资源的代码是因为运行后控制台会报错,但交互面板显示的结果还是对的。

练习总结:1. java变量在SQL语句中表示为‘“+变量名+”’(一对单引号包裹一对双引号,双引号里面有一对加号,加号包裹变量名)。java变量在SQL语句中还有另一种表达,具体点击上面的连接,查看例子。2. 多次用到PreparedStatement和ResultSet的时候不要把它们设为全局变量,否则会运行出错,我的例子因为两次用到查询语句,一开始也是在这个问题上卡了很久。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.geometry.Pos;

public class Console extends Application {
	
	private TextField t1 = new TextField();//给用户填写用户名
	private TextField t2 = new TextField();//给用户输入密码
	private TextField t3 = new TextField();//输出用户信息验证结果
	
    public static void main(String [] args){
	Application.launch(args);
 }
     //创建一个方法连接sql server2012
    private Connection initializeDB() {
        Connection conn = null;
        try {
        	String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
  	    	String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=University";
  	    	String userName="tenglimo";
  	    	String userPwd="welcome";
    		Class.forName(driverName);
    	conn=DriverManager.getConnection(dbURL,userName,userPwd);
            System.out.println("Database connected");
            
            
        } catch (Exception ex) {
            ex.printStackTrace();
        }
            return conn;
    }

    
	
	public void start(Stage primaryStage) {
	    Connection conn = initializeDB();

            //设置输入框格式
    	    t1.setAlignment(Pos.BOTTOM_CENTER);
    	    t2.setAlignment(Pos.BOTTOM_CENTER);
    	    t3.setAlignment(Pos.BOTTOM_CENTER);
    	    t1.setPrefColumnCount(6);
    	    t2.setPrefColumnCount(6);
    	    t3.setPrefColumnCount(20);

    	    //创建一个GridPane存放登录提示信息和输入框
    	    GridPane gpane = new GridPane();
	    gpane.setAlignment(Pos.CENTER);
	    gpane.setHgap(5);
	    gpane.setVgap(5);
	    gpane.add(new Label("UserName:"), 0, 0);
	    gpane.add(new Label("Password:"), 0, 1);
	    gpane.add(t1, 1, 0);
	    gpane.add(t2, 1, 1);
	    		
	    Button rbn=new Button("Reset");//点击之后清除文本框所有内容
    	    Button sbn=new Button("Submit");//点击之后验证用户登录信息是否正确,并输出结果
    	    rbn.setOnAction(e->{
	    	t1.setText("");
	    	t2.setText("");
	    	t3.setText("");
	    	});
    	    sbn.setOnAction(e->{
    	    	try
         		 {
                //验证过程:先根据用户输入的用户名去数据库匹配有没有该用户名,有点话根据该用户名去数据库匹配相应的密码,密码再与用户输入的密码比较,如果匹配,则在t3输出"Welcome xxx!",否则提示登录失败。
    	        String uname=t1.getText();
    	        String psw=t2.getText();
         	String sql1="select name from student where name='"+uname+"'";
         	PreparedStatement preparedStatement=conn.prepareStatement(sql1);
         	ResultSet rs=preparedStatement.executeQuery();
         	if(rs.next()) {
         		String sql2="select ID from student where name='"+uname+"'";
         		PreparedStatement stmt2=conn.prepareStatement(sql2);
         		ResultSet rs2=stmt2.executeQuery();
             	while(rs2.next()) {
             		if(rs2.getString(1).equals(psw)) {
             			t3.setText("Welcome "+uname+"!");
             			//stmt2.close();
             			//rs2.close();
             		}else {
             			t3.setText("Fail to log in!");
             			//stmt2.close();
         		        //rs2.close();
         			    }
             	}
             	//preparedStatement.close();
 		//rs.close();
         	}else {
         		t3.setText("Fail to log in!");
         		//preparedStatement.close();
 			    //rs.close();
         	}
         	
         		    }
         		    catch(Exception e1)
         			  {
         			   e1.printStackTrace();
         			   System.out.print("连接失败");
         			  }    
    	    });
    	    
            //创建一个HBox存放按钮
    	    HBox hb=new HBox();
    	    hb.setAlignment(Pos.BOTTOM_CENTER);
    	    hb.setSpacing(10);
    	    hb.getChildren().addAll(rbn,sbn);
 
            //创建一个VBox存放GridPane和HBox
	    VBox vb=new VBox();
	    vb.getChildren().addAll(gpane,t3,hb);
	    
            //创建一个舞台并把VBox放在舞台	
	    Scene scene = new Scene(vb,300,200);
	    primaryStage.setTitle("LoginWindow");
	    primaryStage.setScene(scene);
	    primaryStage.show();		 
    }  	
}

程序运行结果如下(截图太丑,手动捂脸): 

java连接SQL server2012验证用户登录信息