创建配置文件
文件内容
driverName = com.microsoft.sqlserver.jdbc.SQLServerDriver
dbURL=jdbc:sqlserver://localhost:1433;databaseName=EDBC
userName = sa
userPwd = 123456
类加载器 读取配置文件
注意:jdbc.properties配置文件要放在src目录下
package com.su;
import java.io.*;
import java.lang.reflect.Field;
import java.util.Properties;
public class test {
public static void main(String[] args) throws IOException {
//通过类加载器将配置文件加载进来
InputStream inputStream = test.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties properties = new Properties();
properties.load(inputStream);
inputStream.close();
//获取配置文件内容
String dbURL = properties.getProperty("dbURL");
String userName = properties.getProperty("userName");
String userPwd = properties.getProperty("userPwd");
String driverName = properties.getProperty("driverName");
System.out.println("用户名:"+userName);
System.out.println("密码:"+userPwd);
}
}
JDBCUtils类
不用每次都要重写注册驱动和获取数据库连接对象和释放资源的代码,全部封装在此类中。
package domain;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;
public class JDBCUtils {
private static String dbURL;
private static String userName;
private static String userPwd;
private static String driverName;
static {
//静态代码块,只会执行一次,读取文件,获取值
try{
Properties pro = new Properties();
//获取src路径下的文件的方式---->classloader类加载器
ClassLoader classLoader = JDBCUtils.class.getClassLoader();
URL resource = classLoader.getResource("jdbc.properties");
String path = resource.getPath();
pro.load(new FileReader(path));
dbURL = pro.getProperty("dbURL");
userName = pro.getProperty("userName");
userPwd = pro.getProperty("userPwd");
driverName = pro.getProperty("driverName");
System.out.println(driverName);
Class.forName(driverName);
}catch (IOException e){
e.printStackTrace();
}catch (ClassNotFoundException e){
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException{
return DriverManager.getConnection(dbURL,userName,userPwd);
}
public static void close(Statement stat,Connection conn){
if(stat != null){
try{
stat.close();
}catch (SQLException e){
e.printStackTrace();
}
}
if(conn != null){
try{
conn.close();
}catch (SQLException e){
e.printStackTrace();
}
}
}
public static void close(ResultSet resultSet,Statement stat,Connection conn){
if(resultSet != null){
try{
resultSet.close();
}catch (SQLException e){
e.printStackTrace();
}
}
if(stat != null){
try{
stat.close();
}catch (SQLException e){
e.printStackTrace();
}
}
if(conn != null){
try{
conn.close();
}catch (SQLException e){
e.printStackTrace();
}
}
}
}
学生类:
package domain;
public class Student {
private String sno,sname,ssex,slsNO,saddr,sdept;
private double sage,height;
public Student(String sno, String sname, String ssex, String slsNO, String saddr, String sdept, double sage, double height) {
this.sno = sno;
this.sname = sname;
this.ssex = ssex;
this.slsNO = slsNO;
this.saddr = saddr;
this.sdept = sdept;
this.sage = sage;
this.height = height;
}
@Override
public String toString() {
return "Student{" +
"sno='" + sno + '\'' +
", sname='" + sname + '\'' +
", ssex='" + ssex + '\'' +
", slsNO='" + slsNO + '\'' +
", saddr='" + saddr + '\'' +
", sdept='" + sdept + '\'' +
", sage=" + sage +
", height=" + height +
'}';
}
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getSsex() {
return ssex;
}
public void setSsex(String ssex) {
this.ssex = ssex;
}
public String getSlsNO() {
return slsNO;
}
public void setSlsNO(String slsNO) {
this.slsNO = slsNO;
}
public String getSaddr() {
return saddr;
}
public void setSaddr(String saddr) {
this.saddr = saddr;
}
public String getSdept() {
return sdept;
}
public void setSdept(String sdept) {
this.sdept = sdept;
}
public double getSage() {
return sage;
}
public void setSage(double sage) {
this.sage = sage;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
}
StudentDao类:
package domain;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class StudentDao {
public static void main(String[] args) {
List<Student> list = findAll();
for (Student student : list) {
System.out.println(student);
}
}
public static List<Student> findAll(){ //查询所有学生对象
List<Student> list = new ArrayList<>();
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try{
connection = JDBCUtils.getConnection();
String sql = "select * from student";
statement = connection.createStatement();
resultSet = statement.executeQuery(sql);
String sno,sname,ssex,slsNO,saddr,sdept;
double sage,height;
while(resultSet.next()){
sno = resultSet.getString(1);
sname = resultSet.getString(2);
ssex = resultSet.getString(3);
slsNO = resultSet.getString(4);
saddr = resultSet.getString(5);
sage = resultSet.getDouble(6);
height = resultSet.getDouble(7);
sdept = resultSet.getString(8);
Student student = new Student(sno, sname, ssex, slsNO, saddr, sdept, sage, height);
list.add(student);
}
}catch (SQLException e){
e.printStackTrace();
}
finally {
JDBCUtils.close(resultSet,statement,connection);
}
return list;
}
}
通过键盘录入用户名和密码,判断用户是否登录成功,如果成功,则提示成功,失败则提示失败
创建数据库表usr:
create table usr(
id int primary key identity(1,1),--表示从1开始递增,每次自增一
userName varchar(32),
pwd varchar(32)
)
插入两条记录
insert into usr values('张三','123');
insert into usr values('李四','234');
package Demo;
import domain.JDBCUtils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class UsrDao {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入用户名:");
String usrName = sc.nextLine();
System.out.print("请输入密码:");
String pwd = sc.nextLine();
boolean flag = login(usrName,pwd);
if(flag){
System.out.println("登录成功");
}else{
System.out.println("用户名或密码错误");
}
}
public static boolean login(String userName,String pwd){
if(userName == null && pwd == null){
return false;
}
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
//快捷键【CTRL+ALT+T】,生成try catch
try {
connection = JDBCUtils.getConnection();
String sql = "select * from usr where userName = '"+userName+"' " +
"and pwd = '"+pwd+"' ";
System.out.println(sql);
statement = connection.createStatement();
resultSet = statement.executeQuery(sql);
return resultSet.next();//如果有值返回true
} catch (SQLException e) {
e.printStackTrace();
}
finally {
JDBCUtils.close(resultSet,statement,connection);
}
return false;
}
}
package Demo;
import domain.JDBCUtils;
import java.sql.*;
import java.util.Scanner;
public class UsrDao {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入用户名:");
String usrName = sc.nextLine();
System.out.print("请输入密码:");
String pwd = sc.nextLine();
boolean flag = login(usrName,pwd);
if(flag){
System.out.println("登录成功");
}else{
System.out.println("用户名或密码错误");
}
}
public static boolean login(String userName,String pwd){
if(userName == null && pwd == null){
return false;
}
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
//快捷键【CTRL+ALT+T】,生成try catch
try {
connection = JDBCUtils.getConnection();
String sql = "select * from usr where userName = ? and pwd = ?";
System.out.println(sql);
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1,userName);
preparedStatement.setString(2,pwd);
resultSet = preparedStatement.executeQuery();
return resultSet.next();//如果有值返回true
} catch (SQLException e) {
e.printStackTrace();
}
finally {
JDBCUtils.close(resultSet,preparedStatement,connection);
}
return false;
}
}