在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适合对面向对象的技术有一定掌握的开发者。在实现登陆系统之前، 程序员需要仔细评估选择数据库连接方式的优缺点,以作出合适的选择。
成都网站建设公司-创新互联为您提供网站建设、网站制作、网页设计及定制高端网站建设服务!
之一步:创建一个查询过程,因为在登录时要根据用户名查询用户密码
此步要用到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(“密  码:
“);
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
这个没关系的,别的都可以照搬来用
这个很简单
1、初学者常见的方式,使迅租用JDBC直连数据亩蠢兆库,档毁加载一下驱动就可以。比较直观,但是项目中没人这样用,因为对于昂贵的数据库连接没有管理。
2、项目常见的方式,使用数据库连接池,DBCP,C0,proxool 等等,有统一有效的数据库连接管理,比较方便。
3、希望对你有帮助。
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登陆界面如何连数据库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
香港云服务器机房,创新互联(www.cdcxhl.com)专业云服务器厂商,回大陆优化带宽,安全/稳定/低延迟.创新互联助力企业出海业务,提供一站式解决方案。香港服务器-免备案低延迟-双向CN2+BGP极速互访!
标题名称:Java实现登陆系统:数据库连接方式简介(java登陆界面如何连数据库)
网站链接:http://www.mswzjz.cn/qtweb/news33/46783.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能