java访问数据库的方法有哪些,java如何访问数据库
来源:整理 编辑:黑码技术 2024-05-28 18:12:54
本文目录一览
1,java如何访问数据库
JAVA连接数据库的方式有多种: 根据所需要的不同数据库驱动分,分为四种: 1:1类驱动。这就是JDBC-ODBC桥的方式。但这种方式不适合程序的重用与维护,不推荐使用。需要数据库的ODBC驱动。 2:2类驱动。这就是JDBC+厂商API的形式。厂商API一般使用C编写,所以,这种方式也不长使用。 3:3类驱动。这就是JDBC+厂商Database Connection Server+DataBase的形式。 这种方法就是在JAVA 与 DATABASE之间价起了一台专门用与数据库连接的服务器(一般由数据库厂商提供)。他的好处在于能优化连接。 4:4类驱动。这就是纯JDBC+DATABASE的连接方式。也是推荐的连接方式。这使得APPLICATION与数据库分开,开发者只需关心内部逻辑的实现而不需注重数据库连接的具体实现。在这其中有两种连接的方式: 硬编码方式,就是在程序中硬性编入数据库连接的所须参数。 JNDI DataSource方式。就是在程序运行的外布环境中又称(Context)设置一个datasource数据源,有一个jndi 名称,程序只须查找此名称就可得到一个数据库连接的对象。
2,java连接数据库的方式有多少种
类型1JDBC-ODBC桥这种类型的驱动把所有JDBC的调用传递给ODBC,再让后者调用数据库本地驱动代码(也就是数据库厂商提供的数据库操作二进制代码库,例如Oracle中的oci.dll)。类型2本地API驱动这种类型的驱动通过客户端加载数据库厂商提供的本地代码库(C/C++等)来访问数据库,而在驱动程序中则包含了Java代码。类型3网络协议驱动这种类型的驱动给客户端提供了一个网络API,客户端上的JDBC驱动程序使用套接字(Socket)来调用服务器上的中间件程序,后者在将其请求转化为所需的具体API调用。类型4本地协议驱动这种类型的驱动使用Socket,直接在客户端和数据库间通信。咳咳。。。半年前也被这个问题困扰过 在你的包 jdk 都导入正确的情况下 有这么几个出错的可能性 1、操作系统是什么的?win7系统下sqlserver2005要打sp3补丁 2、因为jdbc连数据库需要端口号的,众所周知sqlserver2005的端口号是1433 但是貌似盗版的sqlserver2005中默认的端口号都是1433但是他的动态端口貌似是空的 所以jdbc可能会找不到 如果你嫌麻烦就在sqlserver管理器下把端口全改成1433 特别是动态的!! 以后学框架hibernate或者spring能替你做这些东西 但是作为基础内容jdbc还是很值得学习的 另外初学者做实验不适合使用sqlserver2005 或者oracle 建议sqlserver 2000或者mysql+navicat(是的这是两个软件)
3,JAVA访问数据库的4种方法
1)JDBC-ODBC桥加ODBC驱动程序 JavaSoft桥产品利用ODBC驱动程序提供JDBC访问。注意,必须将ODBC二进制代码(许多情况下还包括数据库客户机代码)加载到使用该驱动程序的每个客户机上。因此,这种类型的驱动程序最适合于企业网(这种网络上客户机的安装不是主要问题),或者是用Java编写的三层结构的应用程序服务器代码。 (2)本地API 这种类型的驱动程序把客户机API上的JDBC调用转换为Oracle、Sybase、Informix、DB2或其它DBMS的调用。注意,象桥驱动程序一样,这种类型的驱动程序要求将某些二进制代码加载到每台客户机上。 (3)JDBC网络纯Java驱动程序 这种驱动程序将JDBC转换为与DBMS无关的网络协议,之后这种协议又被某个服务器转换为一种DBMS协议。这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上。所用的具体协议取决于提供者。通常,这是最为灵活的JDBC驱动程序。有可能所有这种解决方案的提供者都提供适合于Intranet用的产品。为了使这些产品也支持Internet访问,它们必须处理Web所提出的安全性、通过防火墙的访问等方面的额外要求。几家提供者正将JDBC驱动程序加到他们现有的数据库中间件产品中。 (4)本地协议纯Java驱动程序 这种类型的驱动程序将JDBC调用直接转换为DBMS所使用的网络协议。这将允许从客户机机器上直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。由于许多这样的协议都是专用的,因此数据库提供者自己将是主要来源,有几家提供者已在着手做这件事了。 据专家预计第(3)、(4)类驱动程序将成为从JDBC访问数据库的首方法。第(1)、(2)类驱动程序在直接的纯Java驱动程序还没有上市前会作为过渡方案来使用。对第(1)、(2)类驱动程序可能会有一些变种,这些变种要求有连接器,但通常这些是更加不可取的解决方案。第(3)、(4)类驱动程序提供了Java的所有优点,包括自动安装(例如,通过使用JDBC驱动程序的appletapplet来下载该驱动程序)。
4,JAVA如何连接数据库
java连接数据库的代码 位于MVC中的M(模型层)中,主要负责与数据库打交道。本人把我以前写的代码 加上注释 给你看看 希望对你有帮助。public class UserInfoDAO //验证登陆名/密码sql语句 //private -----这个sql语句只在本类内部使用,没有必要public //static -----sql语句仅仅一份就足够了 //final -----sql语句一般在运行时不变,final修饰的变量相当于常量 //常量名所有字母大写 private static final String SQL_CHECK_USERINFO = "SELECT LOGINNAME,USERNAME,PASSWORD,AGE,ADDRESS FROM USERINFO WHERE LOGINNAME=? AND PASSWORD = ?"; public UserInfoDAO() } /** * 验证登陆名/密码方法 * @param u UserInfo * @return boolean */ public boolean checkUser(UserInfo u) boolean b = false;//验证是否成功的标识 Connection conn = null;//数据库连接的引用 PreparedStatement pstmt = null;//PreparedStatement引用 ResultSet rs = null;//结果集引用 //调用ConnectionManager的方法,得到数据库里连接实例 conn = ConnectionManager.getConnection(); try //通过Connection的prepareStatement()方法构建PreparedStatement实例,参数为sql语句 pstmt = conn.prepareStatement(SQL_CHECK_USERINFO); //为sql语句中的?赋值,注意序号从1开始 pstmt.setString(1, u.getLoginName()); pstmt.setString(2, u.getPassword()); //执行查询得到结果集 rs = pstmt.executeQuery(); //在结果集中循环,如果结果集中有记录意味着验证成功 b = rs.next();//标识置为true while (rs.next()) b = true;//标识置为true } } catch (SQLException ex) System.out.println(ex.getMessage()); } finally //注意:一定在finally中释放数据库资源 cleanUP(rs, pstmt, conn); } return b; } private void cleanUP(ResultSet rs, PreparedStatement pstmt, Connection conn) try if (rs != null) rs.close(); } if (pstmt != null) pstmt.close(); } if (conn != null) conn.close(); } } catch (SQLException ex) System.out.println(ex.getMessage()); } }}
5,Java 如何进行数据库访问的
1. 加载一个对应数据库的JDBC驱动
在建立到一个数据库的连接之前,必须先加载这个数据库的JDBC驱动程序,加载之后此driver会自动注册到JDBC驱动列表中。加载一个JDBC驱动有两种方法。
a) 在命令行方式下指定驱动器或者用冒号分割驱动器列表:
具体命令如下:
C:\>java –Djdbc.drivers = com.company1.Driver:com.company2.Driver youProject
b)第二种方法,在程序中调用Class.forName()方法。推荐使用。。。。
try
{
String driverName = “com.imaginary.sql.msql.MsqlDriver”;
Class.forName(driverName).newInstance();
}
Catch(ClassNotFoundException e1)
{
//catch could not find database driver exception.
}
2.连接到数据库。
根据您后台待连接的数据库不同,而有小小的差别。
a) 连接到Oracle数据库。
Connection connection = null ;
try
{
//load the jdbc driver ;
String driverName = “oracle.jdbc.driver.OracleDriver”;
Class.forName(driverName).newInstance();
//create a connection to the database;
String serverName = “127.0.0.1”;
String serverPort = “1521”;
String serverID = “datebase1”
String userName = “hello”;
String userPsw = “world”;
String url = “jdbc:oracle.thin:@” + serverName + “:” + serverPort + “:” + serverID ;
Connection = DriverManager.getConnection(url , userName , userPsw);
}
catch(ClassNotFoundException e1)
{
//catch could not find database driver exception.
}
catch(SQLException e2)
{
//catch could not connect to the database exception.
}
b) 连接到一个SQL Server数据库。
Connection connection = null ;
try
{
//load the jdbc driver ;
String driverName = “com.microsoft.jdbc.sqlserver.SQLServerDriver”;
Class.forName(driverName).newInstance();
//create a connection to the database;
String serverName = “127.0.0.1”;
String serverPort = “1433”;
String serverID = serverName + serverPort ;
String userName = “hello”;
String userPsw = “world”;
String url = “jdbc:JSQLConnect ://” + serverID ;
Connection = DriverManager.getConnection(url , userName , userPsw);
}
catch(ClassNotFoundException e1)
{
//catch could not find database driver exception.
}
catch(SQLException e2)
{
//catch could not connect to the database exception.
}
c) 连接到一个MySQL数据库上。。。。
Connection connection = null ;
try
{
//load the jdbc driver ;
String driverName = “org.gjt.mm.mysql.Driver”;
Class.forName(driverName).newInstance();
//create a connection to the database;
String serverName = “127.0.0.1”;
String serverID = “database”;
String userName = “hello”;
String userPsw = “world”;
String url = “jdbc:mysql ://” + serverName + “/” + serverID ;
Connection = DriverManager.getConnection(url , userName , userPsw);
}
catch(ClassNotFoundException e1)
{
//catch could not find database driver exception.
}
catch(SQLException e2)
{
//catch could not connect to the database exception.
}
综合上面的三种数据库连接方式 , 其实大同小异。由于访问不同的数据库和所使用的数据库驱动程序不同,所以导致代码表面上有小小不同,但透过表面看来,内部都是
1. 加载一个特定的数据库JDBC驱动。
2. 连接到一个数据库。
3. 之后,就可以对一个特定的数据库进行特定的操作了。 可以先加下群学习下,不会的问题可以问问大家群号是:27324553 java/jsp
装死误入
大家一起来交流 有什么问题到 http://stcp.5d6d.com/ 相应板块提问// public Connection getConn() {
// con = null;
//驱动的包
// try {
// Class.forName("oracle.jdbc.driver.OracleDriver");
//
// } catch (ClassNotFoundException e) {
// JOptionPane.INFORMATION_MESSAGE);
// e.printStackTrace();
// }
//
// String url = "jdbc:oracle:thin:@localhost:1521:name";
//
// try {
// con = DriverManager.getConnection(url, "xukunxi_shop",
// "xukunxi_shop");
// } catch (SQLException e) {
//
// JOptionPane.INFORMATION_MESSAGE);
//
// e.printStackTrace();
// }
//
// return con;
// }
有很多种方式可以访问数据库,,,下面有两种方法,,
第一种是使用Tomcat中配置连接池,得到连接对象,用连接对象来操作数据库
第二种是初学者用的不间断连接,即每个客户端生成一个连接对象,一般在SE中使用..EE中一般不用这个了..
还有其它可能通过 Hibernate配置,EJB...N多...这些都是高级阶段使用的连接池
package com.kunxi.dao.db;
import java.sql.Connection;
import javax.naming.InitialContext;
import javax.sql.DataSource;
/**
* 连接数据库
*
* @author koko
*
*/
public class ConnectionDB {
/**
* 获取数据源对象
*/
public static DataSource getDS() {
DataSource ds = null;
try {
InitialContext ic = new InitialContext();
ds = (DataSource) ic.lookup("java:comp/env/kokoJndi");
} catch (Exception e) {
e.printStackTrace();
}
return ds;
}
/**
* 获取连接对象
*
* @return 连接对象
*/
public static Connection getConn() {
Connection conn = null;
try {
InitialContext ic = new InitialContext();
DataSource ds = (DataSource) ic.lookup("java:comp/env/kokoJndi");
conn = ds.getConnection();
System.out.println(conn.hashCode() + "***");
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
文章TAG:
java 访问 数据 数据库 java访问数据库的方法有哪些