欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JAVA连接SQLSERVER2008实现教程

程序员文章站 2022-05-23 17:00:30
先实现简单的登录界面,这里用了两个类,一个UI(主界面)类,一个连接数据库方法类 之间需要添加驱动和环境变量,具体的准备工作请看前人的工作 UI类 package ui;...

先实现简单的登录界面,这里用了两个类,一个UI(主界面)类,一个连接数据库方法类

之间需要添加驱动和环境变量,具体的准备工作请看前人的工作

UI类

package ui;

import java.awt.event.*;
import javax.swing.*;
import conn.connect;
import ui.MainFrame;
//导入相应的包
//import java.awt.event.ActionListener;
//import java.awt.event.ActionEvent;
//import javax.swing.JButton;
//import javax.swing.JFrame;
//import javax.swing.JLabel;
//import javax.swing.JPanel;
//import javax.swing.JPasswordField;
//import javax.swing.JTextField;

public class ui extends JFrame implements ActionListener {

	/**
	 * 
	 */
	private static final long serialVersionUID = 2373066478342237427L;

	JPanel jp = new JPanel();

	JLabel[] jlArray = { new JLabel("用户名"), new JLabel("口 令"), new JLabel("") };
	JButton[] jbArray = { new JButton("登陆"), new JButton("退出") };
	JTextField jtxtName = new JTextField();
	JPasswordField jtxtPassword = new JPasswordField();

	public ui() { // 构造方法

		jp.setLayout(null);

		for (int i = 0; i < 2; i++) {
			jlArray[i].setBounds(30, 20 + i * 50, 80, 26);
			jbArray[i].setBounds(50 + i * 110, 130, 80, 26);
			jp.add(jlArray[i]);
			jp.add(jbArray[i]);
			jbArray[i].addActionListener(this);
		}
		jtxtName.setBounds(80, 20, 180, 30);
		jp.add(jtxtName);
		jtxtName.addActionListener(this);
		jtxtPassword.setBounds(80, 70, 180, 30);
		jp.add(jtxtPassword);
		jtxtPassword.setEchoChar('*');
		jtxtPassword.addActionListener(this);
		jlArray[2].setBounds(10, 180, 300, 30);
		jp.add(jlArray[2]);
		this.add(jp);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setTitle("登陆");
		this.setResizable(false);
		this.setBounds(800, 370, 300, 250);
		this.setVisible(true);
	}

	public void actionPerformed(ActionEvent e) { // 事件监听方法
		boolean flag;
		String username = jtxtName.getText();
		String password = String.valueOf(jtxtPassword.getPassword());
		flag = connect.validator(username, password);
		if (e.getSource() == jtxtName) {
			jtxtPassword.requestFocus();
		} else if (e.getSource() == jbArray[1]) {
			System.exit(0);}
		else {
			if (flag) {
				setVisible(false);
				new MainFrame(username).setVisible(true);
			} else
				jlArray[2].setText("登陆错误");	
		}
		
	}

	

	public static void main(String[] args) {// main方法
		new ui();
		
	}
}

数据库连接类

package conn;

import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;

public class connect {
	public static boolean validator(String username, String password) {
		Connection conn;
		Statement stmt;
		ResultSet rs;
		boolean flag = false;
		String url = "jdbc:sqlserver://localhost:1433;DatabaseName=student;";
		username=TransactSQLInjection(username);
		 password=TransactSQLInjection(password);
		String sql = "select * FROM dbo.usercode where U_id='" + username + "'and Password='" + password + "'";
		try {
			// 连接数据库
			conn = DriverManager.getConnection(url, "sa", "root");
			// conn = DriverManager.getConnection(url, "user8", "u0008");// 建立Statement对象
			stmt = conn.createStatement();
			/**
			 * Statement createStatement() 创建一个 Statement 对象来将 SQL 语句发送到数据库。
			 */
			// 执行数据库查询语句
			rs = stmt.executeQuery(sql);
			/**
			 * ResultSet executeQuery(String sql) throws SQLException 执行给定的 SQL 语句,该语句返回单个
			 * ResultSet 对象
			 */
			while (rs.next()) {
				if (rs != null) {
					flag = true;
					break;
				}

			}
			if (rs != null) {
				rs.close();
				rs = null;
			}
			if (stmt != null) {
				stmt.close();
				stmt = null;
			}
			if (conn != null) {
				conn.close();
				conn = null;
			}
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("数据库连接失败");
		}
		return flag;
	}
	 public static String TransactSQLInjection(String str){
		return str.replaceAll("([';])+|(--)+","");//防止数据库注入的代码
	}

	public static void main(String[] args) {

	}
}