Java实现登陆系统:数据库连接方式简介 (java登陆界面如何连数据库)

在Web应用程序开发中,数据库是一个必不可少的组成部分。对于Java程序员来说,数据库操作也是必须要掌握的技能之一。Java中,有多种数据库连接的方式,本文将介绍几种Java中常见的数据库连接方式。

一、JDBC连接方式

JDBC(Java DataBase Connectivity)是Java中访问关系型数据库的标准技术,Java程序员可通过JDBC连接关系型数据库进行数据读写操作。JDBC连接需要采用Java中提供的JDBC驱动,不同数据库连接的驱动是不同的。开发者需要使用相应的JDBC驱动来连接数据库。

JDBC连接使用步骤如下:

1. 加载驱动

使用Class.forName()方法加载驱动类。例如: Class.forName(“com.mysql.jdbc.Driver”);

2. 创建连接

使用DriverManager.getConnection()方法创建连接对象。例如: Connection conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/test”,”root”,”root”);

3. 创建语句

使用Connection.prepareStatement()方法创建预编译的SQL语句。例如: PreparedStatement ps = conn.prepareStatement(“select * from user where name=? and password=?”);

4. 执行SQL语句

使用PreparedStatement.executeUpdate()方法执行SQL语句。例如: ResultSet rs = ps.executeQuery();

5. 获取结果集

通过ResultSet获取执行SQL语句返回的结果。

JDBC连接方式简单易懂,适合初学者学习。但是,JDBC连接存在一些缺陷,比如代码重复,书写繁琐等等。

二、C0数据库连接池

C0是一款开源的数据库连接池库,使用C0可以有效提高数据库访问速度,避免了频繁的数据库连接开关操作。使用C0的好处在于它可以有效地管理数据库连接,避免因为频繁的数据库连接打开和关闭导致的效率低下的问题。

使用C0连接池连接数据库的步骤如下:

1. 引入C0的jar包

2. 配置数据源

通过配置c3p0-config.xml文件或者在Java代码中编写配置信息来初始化数据源。例如:

“`

ComboPooledDataSource dataSource = new ComboPooledDataSource();

dataSource.setDriverClass(driverClass);

dataSource.setJdbcUrl(jdbcUrl);

dataSource.setUser(user);

dataSource.setPassword(password);

“`

3. 获取连接

从数据源中获取连接进行数据库操作。例如:

“`

Connection connection = dataSource.getConnection();

“`

C0连接池方便易用,可以较容易地管理并发连接和提高连接使用效率。

三、Hibernate连接方式

Hibernate是一个开放源代码的对象关系映射框架,它使用JDBC连接关系型数据库,但与JDBC不同的是,Hibernate是面向对象的,强制性地将数据存储到类中。

使用Hibernate连接数据库的步骤如下:

1. 引入Hibernate的jar包

2. 配置Hibernate连接属性

Hibernate连接属性包括驱动类名称、连接URL、用户名和密码等。例如:

“`

hibernate.connection.driver_class=com.mysql.jdbc.Driver

hibernate.connection.url=jdbc:mysql://localhost:3306/test

hibernate.connection.username=root

hibernate.connection.password=root

“`

3. 创建SessionFactory

SessionFactory是Hibernate的核心接口,用于生成Session实例,这个过程比较耗费性能,因此尽量使用单例模式。例如:

“`

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

“`

4. 获取Session

Session是Hibernate的核心组件,用于进行数据库访问和修改数据等操作。例如:

“`

Session session = sessionFactory.openSession();

“`

Hibernate使用面向对象的方式进行数据库操作,开发效率高,使用方便。

Java实现登陆系统需要连接数据库,常用的数据库连接方式有JDBC连接、C0连接池和Hibernate连接方式。选择不同的连接方式需要考虑到自己的程序需求和技能水平,JDBC连接方式适合初学者,C0连接池适合于需要高并发连接和提高连接使用效率的情况,Hibernate适合对面向对象的技术有一定掌握的开发者。在实现登陆系统之前، 程序员需要仔细评估选择数据库连接方式的优缺点,以作出合适的选择。

相关问题拓展阅读:

求用java编登录页面,可以连接MySql 数据库

之一步:创建一个查询过程,因为在登录时要根据用户名查询用户密码

此步要用到pl/芦旁颤sql编程知陪败识,代码如下:

create or replace procedure sel_user(uname in varchar2,pass out varchar2) is

begin

select users.password into pass from users where users.username=uname and rownum = 1;

end;

第二步:编写登录页面(login.java)(采用纯java+servlet编写)

//login.java如下

package cn.hnu;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class testhtml extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

resp.setContentType(“text/html;charset=gbk”);

try {

PrintWriter pw = resp.getWriter();

pw.println(“”);

pw.println(“”);

pw.println(“”);

pw.println(“用户登录”);

pw.println(“”);

pw.println(“”);

pw.println(“”);

pw.println(“

用户登录

“);

pw.println(“”);

pw.println(“”);

pw.println(“用户名:
“);

pw.println(“密&nbsp&nbsp码:
“);

pw.println(“”);

pw.println(“”);

pw.println(“”);

pw.println(“”);

pw.println(“”);

} catch (Exception e) {

e.printStackTrace();

// TODO: handle exception

}

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// TODO Auto-generated method stub

this.doGet(req, resp);

}

}

第三步:编程成功登录页面(wel.java) //wel.java如下,它主要用于用户正常登录后显示信息给用户

package cn.hnu;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

public class Wel extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// TODO Auto-generated method stub

//防止用户非法登录

HttpSession hs = req.getSession();

String s = (String)hs.getAttribute(“pass”);

if(s == null){

resp.sendRedirect(“login”);

}

PrintWriter pw = resp.getWriter();

pw.write(“welcome,hello”);

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// TODO Auto-generated method stub

this.doGet(req, resp);

}

}

第四步:编写login处理页面(loginCl.java)

package cn.hnu;

import java.io.IOException;

import java.sql.*;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

public class loginCl extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// TODO Auto-generated method stub

String u = req.getParameter(“userName”);

String p = req.getParameter(“password”);

//查询数据库

String pa=null;

Connection ct = null;

CallableStatement cs = null;

try {

Class.forName(“oracle.jdbc.driver.OracleDriver”);

ct = DriverManager.getConnection(“jdbc:oracle:thin:@localhost:1521:oracle”,

“scott”, “tiger”);

cs = ct.prepareCall(“{call sel_user(?,?)}”);

cs.setString(1, u);

cs.registerOutParameter(2, oracle.jdbc.OracleTypes.VARCHAR);

cs.execute();

pa = cs.getString(2);

System.out.println(“u=” + u + ” p=” + pa);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

try {

if (cs != null) {

cs.close();

}

if (ct != null) {

ct.close();

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//验证用户信息是否合法

if (p.equals(pa)) {

HttpSession hs = req.getSession(true);//防止用户非法登录

hs.setAttribute(“pass”, “OK”);

resp.sendRedirect(“wel”);

} else {

resp.sendRedirect(“login”);

}

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// TODO Auto-generated method stub

this.doGet(req, resp);

}

}

亲,sql可以换成MySQL

这个没关系的,别的都可以照搬来用

Java中怎么连接数据库

这个很简单

1、初学者常见的方式,使迅租用JDBC直连数据亩蠢兆库,档毁加载一下驱动就可以。比较直观,但是项目中没人这样用,因为对于昂贵的数据库连接没有管理。

2、项目常见的方式,使用数据库连接池,DBCP,C0,proxool 等等,有统一有效的数据库连接管理,比较方便。

3、希望对你有帮助。

java中如何实现登录界面与数据库正确连接?

import java.awt.Dimension;

import java.awt.GridLayout;

import java.awt.Toolkit;

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.JDialog;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JPasswordField;

import javax.swing.JTextField;/*** * @author mzhe**/

class Loginfrm extends JDialog implements ActionListener

{

JLabel l_name,l_pass,l_error;

JTextField t_name;

JButton b_enter,b_cancle,b_clear;

JPanel pan1,pan2,pan3,pan4;

JPasswordField t_pass;

String sname,spass;

int sunit;

NetConn sql;

Statement sqll;

ResultSet rs;

Librarybox lbox;

int until=0;

Loginfrm(JFrame f,String s)

{

//界面布局

super(f,s);

l_name=new JLabel(“名字:”);

l_pass=new JLabel(“密码:”);

l_error=new JLabel(“请输入用户名和密码登录”);

t_name=new JTextField(“”,10);

t_pass=new JPasswordField(“”,10);

t_pass.setEchoChar(‘悉灶*’);

b_enter=new JButton(“确定”);

b_enter.addActionListener(this);

b_cancle=new JButton(“取消”);

b_cancle.addActionListener(this);

b_clear=new JButton(“清除”);

b_clear.addActionListener(this);

pan1=new JPanel();

pan2=new JPanel();

pan3=new JPanel();

pan4=new JPanel();

pan1.add(l_name);

pan1.add(t_name);

pan2.add(l_pass);

pan2.add(t_pass);

pan3.add(l_error);

pan4.add(b_enter);

pan4.add(b_cancle);

pan4.add(b_clear);

setLayout(new GridLayout(4,1));

add(pan1);

add(pan2);

add(pan3);

add(pan4);

//建立数据库连接

sql=new NetConn();

//设睁配扮置窗口大小

setSize(300,300);

setVisible(false);

//得到屏幕信息以便使框架居中显示

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

int screeWidth=screeSize.width;

int screeHeight=screeSize.height;

//得到框架的大小信息卖滚

Dimension frameSize=this.getSize();

int x=(screeWidth-frameSize.width)/2;

int y=(screeHeight-frameSize.height)/2;

this.setLocation(x, y);

}

public void actionPerformed(ActionEvent e)

{

//单击确定按钮的事件处理程序

if(e.getSource()==b_enter)

{

//如果连续登录次数小于4

if(until

{

//如果用户名或者密码为空,将显示提示信息

if(t_name.getText().equals(“”)||t_pass.getText().equals(“”))

{

l_error.setText(“用户名和密码不能为空”);

}

else

{

try{

sqll=sql.connect();

//根据用户名查询

rs=sqll.executeQuery(“SELECT * FROM users where username=”+”‘”+t_name.getText()+”‘”);

//遍历查询得到的结果集

while(rs.next())

{

sname=rs.getString(2);

spass=rs.getString(3);

//得到登录用户的级别

sunit=Integer.parseInt(rs.getString(4));

//如果密码正确

if(t_pass.getText().equals(spass))

{

//判断用户的级别,根据不同的级别,显示不同的菜单

switch(sunit)

{

case 1:{l_error.setText(“登录成功”);

t_name.setText(“”);

t_pass.setText(“”);

lbox=new Librarybox();

lbox.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

lbox.setResizable(false);

lbox.bookfi.setEnabled(true);

lbox.bookse.setEnabled(true);

lbox.bookth.setEnabled(true);

lbox.bookfo.setEnabled(true);

lbox.mi_system_manger.setEnabled(true);

lbox.mi_system_login.setEnabled(false);

lbox.setVisible(true);this.dispose();

break;

}

case 2: {

l_error.setText(“登录成功”);

t_name.setText(“”);

t_pass.setText(“”);

lbox=new Librarybox();

lbox.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

lbox.setResizable(false);

lbox.bookfi.setEnabled(false);

lbox.bookse.setEnabled(false);

lbox.bookth.setEnabled(true);

lbox.bookfo.setEnabled(false);

lbox.mi_system_manger.setEnabled(false);

lbox.mi_system_login.setEnabled(false);

lbox.setVisible(true);

this.dispose();break;

}

case 3:

{

l_error.setText(“登录成功”);

t_name.setText(“”);

t_pass.setText(“”);

lbox=new Librarybox();

lbox.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

lbox.setResizable(false);

lbox.bookfi.setEnabled(true);

lbox.bookse.setEnabled(false);

lbox.bookth.setEnabled(false);

lbox.bookfo.setEnabled(true);

lbox.mi_system_manger.setEnabled(false);

lbox.mi_system_login.setEnabled(false);

lbox.fi_msglabel_user.setEnabled(false);

lbox.setVisible(true);

this.dispose();

break;

}

}

}

else{

l_error.setText(“用户名或密码错误!”);

until++;

}

}

}catch(SQLException e2){

e2.printStackTrace();

}

}

}

//超出登录次数

else{

l_error.setText(“你已经超出登录次数”);

t_name.setEnabled(false);

t_pass.setEnabled(false);

b_enter.setEnabled(false);

b_clear.setEnabled(false);

}

}//单击清除按钮的事件处理程序

else if(e.getSource()==b_clear)

{

t_name.setText(“”);

t_pass.setText(“”);

l_error.setText(“请输入用户名和密码登录”);

}

//单击取消按钮的事件处理程序

else if(e.getSource()==b_cancle)

{

dispose();

}

}

}

看你用什么框架了耐枝 简单一点的比如jsp+javabean 页面提交表单,提交给后台的javabean 后台使昌侍敏用jdbc的话 按照jdbc的配置顺序建立好数据库连接,然后拼sql语句 把表单的变量放到sql语句里 就完谈桐成了一次和数据库的交互!!很简单的,多看看其他人的项目例子!

关于java登陆界面如何连数据库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » Java实现登陆系统:数据库连接方式简介 (java登陆界面如何连数据库)