java jdbc 登录_(第一个jdbc入门项目)java实现的登录系统(mysql实现的)

首次接触jdbc编程,本来想写一个成绩查询系统,感觉自己的数据库基础还是很差,所以找啦一个比较简单的登录程序做

但是由于水平有限,自动登录和记住密码功能没有写出来,希望大家指点一下

import javax.swing.*;

import java.net.*;

import java.awt.event.*;

import java.awt.*;

import java.sql.*;

public class Landing extends JFrame implements ActionListener,ItemListener {

private String driver="com.mysql.jdbc.Driver";

private String url="jdbc:mysql://127.0.0.1:3306/denglusql";

private String user="root";

private String pass="yeqing123";

//数据库的连接信息

private JFrame jf=new JFrame("登录系统");

private JLabel jl_user=new JLabel("账号");

private JLabel jl_pass=new JLabel("密码");

private JButton jb_zhuce=new JButton("注册");

private JButton jb_landing=new JButton("登录");

private JComboBox jtf_user=new JComboBox();

privateJPasswordField jtf_pass=new JPasswordField();

private JPanel jp_certen=new JPanel(null);

private JPanel jp_main;

private JLabel jb_top=new JLabel();

private JLabel jb_base=new JLabel();

private JCheckBox jcb_mm=new JCheckBox("记住密码");

private JCheckBox jcb_dl=new JCheckBox("自动登录");

//一些定义以及实现这个登录功能的组件

public void LandingWindows(){

try {

Class.forName(driver);

} catch (ClassNotFoundException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

jb_landing.addActionListener(this);

jb_zhuce.addActionListener(this);

setcerten();//设置主界面的主要布局

adduser();//记住登录的用户名

jp_main=new JPanel(new BorderLayout()){

@Override

public void paintComponent(Graphics g) {

Graphics2D g2=(Graphics2D)g;

super.paintComponents(g);

Image image=Toolkit.getDefaultToolkit().getImage("F:\\JavaMedia\\landing2.jpg");

g2.drawImage(image,0,0,this.getWidth(),this.getHeight(),this);

}

};

//通过重写这个方法设置这个主见的背景图片,有很多实现方法,这是比较简单的方法吧,可以通过查阅api得到。

jp_main.add(jb_top,BorderLayout.NORTH);

jp_main.add(jb_base,BorderLayout.SOUTH);

jp_main.add(jp_certen,BorderLayout.CENTER);

jb_top.setPreferredSize(new Dimension(jf.getWidth(),30));

jb_base.setPreferredSize(new Dimension(jf.getWidth(),25));

//通过设置两个空白面板来调整整个布局的位置

jf.setContentPane(jp_main);

jf.setSize(390,250);

Dimension scrp=Toolkit.getDefaultToolkit().getScreenSize();

jf.setLocation((scrp.width-jf.getWidth())/2,(scrp.height-jf.getHeight())/2);

/*设置它的位置的常用方法吧,先得到它整个屏幕的宽高,然后用这种方法,不管在什么屏幕中都能显示在中间的

位置吧*/

jf.addWindowListener(new WindowAdapter(){

@Override

public void windowClosing(WindowEvent arg0) {

quit();

}

//退出ui的实现程序

});

jf.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);

jf.setResizable(false);

jf.setVisible(true);

}

@Override

public void actionPerformed(ActionEvent e) {

if(e.getSource()==jb_zhuce){

zhuce();

}

if(e.getSource()==jb_landing){

denglu();

}

}

public void quit(){

int flag=0;

String mesg="你确定要退出此登录系统?";

flag=JOptionPane.showConfirmDialog(jf,mesg,"提示",JOptionPane.YES_NO_OPTION);

if(flag==JOptionPane.YES_OPTION){

System.exit(0);

}

}

public void itemStateChanged(ItemEvent e){

if(e.getSource()==jcb_mm){

getpass();

}

if(e.getSource()==jcb_dl){

denglu();

}

}

public void setcerten(){

jp_certen.setOpaque(false); //这个方法很重要,一定要设置false,才能显示出完整的背景图片

jl_user.setBounds(80,15,60,20);

jl_pass.setBounds(80,55,60,20);

jtf_user.setBounds(130,10,150,30);

jtf_pass.setBounds(130,50,150,30);

jcb_mm.setBounds(90, 90, 80, 20);

jcb_mm.addItemListener(this);

jcb_dl.setBounds(190,90,80,20);

jcb_mm.addItemListener(this);

jb_zhuce.setBounds(230,120,70,30);

jb_landing.setBounds(80,120,70,30);

jp_certen.add(jl_user);

jl_user.setForeground(Color.red);

jp_certen.add(jtf_user);

jtf_user.setEditable(true);

jp_certen.add(jl_pass);

jl_pass.setForeground(Color.red);

jp_certen.add(jcb_mm);

jp_certen.add(jcb_dl);

jp_certen.add(jtf_pass);

jp_certen.add(jb_landing);

jp_certen.add(jb_zhuce);

}

//主要的布局程序类

public void zhuce(){

String z_user=String.valueOf(jtf_user.getSelectedItem());

String z_pass=String.valueOf(jtf_pass.getPassword());

String sql;

if(z_user.trim().equals("")||z_pass.equals(""))

{

JOptionPane.showMessageDialog(jf,"账号或密码不能为空!!!","提醒",JOptionPane.INFORMATION_MESSAGE);

}else

{

Connection conn=null;

PreparedStatement psta=null;

ResultSet rs=null;

try { sql="select j_user from denglu where j_user=?";

conn=DriverManager.getConnection(url,user,pass);

psta=conn.prepareStatement(sql);

//prepareStatement比Statement强大啦很多

psta.setString(1,z_user);

rs=psta.executeQuery();

if(rs.next()){

JOptionPane.showMessageDialog(jf, "该用户已注册,请重新输入用户名!!",

"提醒!",JOptionPane.INFORMATION_MESSAGE);

}else{

if(z_pass.length()>=6)

{sql="insert into denglu(j_user,j_pass) values(?,?)";

psta.setString(1,z_user);

psta.setString(2,z_pass);

conn=DriverManager.getConnection(url,user,pass);

psta=conn.prepareStatement(sql);

psta.executeUpdate();

JOptionPane.showMessageDialog(jf,"注册成功,请登录!!!");}

else{

JOptionPane.showMessageDialog(jf,"密码须大于六位!!!","提醒!",JOptionPane.INFORMATION_MESSAGE);

}

}

} catch (SQLException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

finally{

try {

if(rs!=null){

rs.close();

rs=null;}

if(psta!=null){

psta.close();

psta=null;

}

if(conn!=null){

conn.close();

conn=null;

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

//实现注册功能的类,通过使用insert into语句把数据加入到数据库中,实现注册功能

public void adduser(){

String a_user=String.valueOf(jtf_user.getSelectedItem());

String a_pass=String.valueOf(jtf_pass.getPassword());

String sql="select j_user from denglu;";

try {

Connection conn=DriverManager.getConnection(url,user,pass);

PreparedStatement sta=conn.prepareStatement(sql);

ResultSet rs=sta.executeQuery();

rs.afterLast();

int i=0;

String s=null;

while(rs.previous()&&i<4){

i++;

s=rs.getString("j_user");

jtf_user.addItem(s);

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}//通过查找数据库来实现的记住前四个用户名的功能

public void getpass(){

String g_user=String.valueOf(jtf_user.getSelectedItem());

String g_pass=String.valueOf(jtf_pass.getPassword());

String sql="select j_user,j_pass from denglu where j_user=?";

Connection conn=null;

PreparedStatement psta=null;

ResultSetrs=null;

try {

conn=DriverManager.getConnection(url,user,pass);

psta=conn.prepareStatement(sql);

psta.setString(1,g_user);

rs=psta.executeQuery();

String s=null;

while(rs.next()){

s=rs.getString("j_pass");

}

jtf_user.addItem(s);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

finally{

try{

if(rs!=null){

rs.close();

rs=null;

}

if(psta!=null){

psta.close();

psta=null;}

if(conn!=null){

conn.close();

conn=null;}

}catch (SQLException e){

e.printStackTrace();}

}

}

public void denglu(){

String d_user=String.valueOf(jtf_user.getSelectedItem());

String d_pass=String.valueOf(jtf_pass.getPassword());

String sql="select j_user,j_pass from denglu where j_user=?";

if(d_user.equals("")||d_pass.equals("")){

JOptionPane.showMessageDialog(jf,"登录密码或账户不能为空!!!!","警告,提醒!!!",JOptionPane.INFORMATION_MESSAGE);

}else{Connection conn=null;

PreparedStatement psta=null;

ResultSet rs=null;

try {

conn=DriverManager.getConnection(url,user,pass);

psta=conn.prepareStatement(sql);

psta.setString(1,d_user);

rs=psta.executeQuery();

if(rs.next()){

if(d_pass.equals(rs.getString(2)))

{

JOptionPane.showMessageDialog(jf,"登录成功");

System.exit(0);

}else{

JOptionPane.showMessageDialog(jf,"密码输入错误!!!","提醒!!警告!!!",JOptionPane.ERROR_MESSAGE);

}

}

else{

JOptionPane.showMessageDialog(jf,"用户名不存在,请重新输入或注册一个账户!!!","提醒!!!",JOptionPane.INFORMATION_MESSAGE);

}

}

catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

finally{

try{

if(rs!=null){

rs.close();

rs=null;

}

if(psta!=null){

psta.close();

psta=null;

}

if(conn!=null){

conn.close();

conn=null;

}

}

catch(SQLException e){

e.printStackTrace();

}}}}

public static void main(String[] args) {

new Landing().LandingWindows();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值