数据库实例
开始写代码之前一定要记得导入相应的数据库jar包
首先先新建一个数据库文件
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Test {
public static void main(String[] args) {
//连接数据库的驱动
String driver="com.mysql.jdbc.Driver";
//URL指向要访问的数据库名
String url="jdbc:mysql://localhost:3306/clazz";
//MySQL配置时的用户名
String user="root";
//Java连接MySQL配置时的密码
String password="10312517";
try {
//加载驱动
Class.forName(driver);
//与数据库建立连接
Connection conn=DriverManager.getConnection(url,user,password);
if(!conn.isClosed()){
//数据库操作类
Statement state=conn.createStatement();
// String insert="insert into teacher(teacher_name,sex,age)values('刘红',0,22)";
// state.execute(insert);
// System.out.println("插入运行完成");
// String update="update teacher set teacher_name='刘二狗' where age=22";
// state.execute(update);
// System.out.println("更改运行完成");
// String delete="delete from teacher where teacher_name='刘二狗'";
// state.execute(delete);
// System.out.println("删除运行完成");
state.execute("create TABLE if not exists demo(id int NOT NULL PRIMARY KEY auto_increment, name varchar(30) binary NOT NULL , password varchar(30) binary NOT NULL)");//binary用于区分大小写
System.out.println("创建成功");
}else{
System.out.println("请打开数据库");
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//eclipse中数据库的“查”代码
String sql = "select teacher_name,age,sex from teacher where age>19";
// statement.execute(sql);
ResultSet resultSet = state.executeQuery(sql);
resultSet.first();// 先把游标移到第一位
while (!resultSet.isAfterLast()) {// 判断是否移到最后
int age = resultSet.getInt("age");
System.out.println(age);
resultSet.next();
}
再写一个SQLManager类
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class SQLManager {
// 单例设计模式
private Statement statement;
private static SQLManager manager;
// 防止多线程产生多个对象
public static synchronized SQLManager newInstance() {
if (manager == null) {
manager = new SQLManager();
}
return manager;
}
private SQLManager() {
// 连接数据库的驱动
String driver = "com.mysql.jdbc.Driver";
// URL指向要访问的数据库名
String url = "jdbc:mysql://localhost:3306/clazz";
// MySQL配置时的用户名
String user = "root";
// Java连接MySQL配置时的密码
String password = "10312517";
try {
// 加载驱动
Class.forName(driver);
// 与数据库建立连接
Connection conn = DriverManager.getConnection(url, user, password);
if (!conn.isClosed()) {
// 数据库操作类
statement = conn.createStatement();
} else {
System.out.println("请打开数据库");
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Statement getStatement() {
return statement;
}
public void setStatement(Statement statement) {
this.statement = statement;
}
}
注册
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JLabel;
public class Register extends JFrame {
private JPanel contentPane;
private JTextField UserName;
private JTextField PassWord;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Register frame = new Register();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Register() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
UserName = new JTextField();
UserName.setBounds(146, 28, 155, 41);
contentPane.add(UserName);
UserName.setColumns(10);
PassWord = new JTextField();
PassWord.setBounds(146, 91, 155, 23);
contentPane.add(PassWord);
PassWord.setColumns(10);
JButton btnNewButton = new JButton("注册");
btnNewButton.setBounds(146, 124, 155, 46);
contentPane.add(btnNewButton);
btnNewButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String userName = UserName.getText();
// 用正则表达式限制输入名称
Pattern p = Pattern.compile("([a-z]|[A-Z]|[0-9]|[\\u4e00-\\u9fa5])+");
Matcher m = p.matcher(userName);
boolean b = m.matches();
// if (!b) {
// UserName.setText("用户名格式有错误");
// String s = UserName.getText();
// System.out.println(s);
// }
String password = PassWord.getText();
Statement state = SQLManager.newInstance().getStatement();
String sql = "select * from demo where name='" + userName + "'";
try {
ResultSet set = state.executeQuery(sql);
set.last();
int num = set.getRow();// 返回num是第几行
System.out.println(num);
if (num > 0) {
// if (!b) {
// UserName.setText("用户名格式有错误");
// String s = UserName.getText();
// System.out.println(s);
// } else {
System.out.println("该用户已注册");
// }
} else {
String register = "insert into demo(name,password)values('" + userName + "','" + password
+ "')";
state.execute(register);
System.out.println("注册成功");
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
JLabel lblUser = new JLabel("user");
lblUser.setBounds(59, 41, 54, 15);
contentPane.add(lblUser);
JLabel lblPassword = new JLabel("password");
lblPassword.setBounds(59, 95, 54, 15);
contentPane.add(lblPassword);
}
}
登录
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JButton;
public class SignIn extends JFrame {
private JPanel contentPane;
private JTextField textFielduserName;
private JTextField textFieldpassword;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
SignIn frame = new SignIn();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public SignIn() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
textFielduserName = new JTextField();
textFielduserName.setBounds(138, 68, 133, 34);
contentPane.add(textFielduserName);
textFielduserName.setColumns(10);
JButton btnSignIn = new JButton("\u767B\u5F55");
btnSignIn.setBounds(166, 181, 93, 23);
contentPane.add(btnSignIn);
btnSignIn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String userName=textFielduserName.getText();
String password=textFieldpassword.getText();
Statement state=SQLManager.newInstance().getStatement();
String sql="select * from demo where name='"+userName+"' and password='"+password+"'";
try {
ResultSet set=state.executeQuery(sql);
set.last();
int num=set.getRow();
System.out.println(num);
if(num==1){
System.out.println("登录成功");
}else{
System.out.println("登录失败");
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
textFieldpassword = new JTextField();
textFieldpassword.setBounds(138, 112, 133, 23);
contentPane.add(textFieldpassword);
textFieldpassword.setColumns(10);
}
}