导航:首页 > 数据处理 > java和数据库连接放在哪个层

java和数据库连接放在哪个层

发布时间:2024-08-15 21:32:56

⑴ 实现数据库和java的链接怎么操作数据库

之前在远标做过用JAVA连接数据库主要有两种方式,一是用JDBC-ODBC桥来连接,二是用相关厂商提供的相应驱动程序来连接,袜枯首先谈谈第一种连接。

JDBC-ODBC桥接器是用JdbcOdbc.Class和一个用于访问ODBC驱动程序的本地库实现的。对于WINDOWS平台,该本地库是一个动态连接库DLL(JDBCODBC.DLL)。

由于JDBC在设计上与ODBC很接近。在内部,这个驱动程序把JDBC的方法映射到ODBC调用上,这样,JDBC就可以和任何可用滚好败的ODBC驱动程序进行交互了。这种桥接器的优点是,它使JDBC目前有能力访问几乎所有的数据库。通行方式如图所示:

应用程序---JDBC API---JDBC-ODBC---ODBC API---ODBC层---数据源

具体操作方法为:

首先打开控制面板的管理工具,打开数据源(ODBC),在用户DSN里面添加数据源(即你要连接的数据库的名字),在这里假定连接SQL SERVER 2000的GoodsSupply数据库。名称填写你要连接的数据库的名称(GoodsSupply),然后逐步设置,如果选用了使用SQL-SERVER密码认证的话,就要输入相应的用户名及密码连接到数据库。一路下一步设置完成。

在JAVA里面编写程序进行测试,在这里我的程序是让用户输入任意的表名与与列名,把该列的所有数据输出。源代码如大颤下:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.sql.*;

public class ODBCBridge {

public static void main(String[] args) {
String url="jdbc:odbc:GoodsSupply";
Statement sm=null;
String command=null;
ResultSet rs=null;
String tableName=null;
String cName=null;
String result=null;
BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
try {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加载驱动
}catch(ClassNotFoundException e){
System.out.println("Can not load Jdbc-Odbc Bridge Driver");
System.err.print("ClassNotFoundException:");
System.err.println(e.getMessage());
}
Connection con=DriverManager.getConnection(url,"USER","PASSWORD"); //使用SQL-SERVER2000认证
DatabaseMetaData dmd=con.getMetaData(); //DMD为连接的相应情况
System.out.println("连接的数据库:"+dmd.getURL());
System.out.println("驱动程序:"+dmd.getDriverName());
sm=con.createStatement();
System.out.println("输入表名");
tableName=input.readLine();
while(true) {
System.out.println("输入列名(为空时程序结束):");
cName=input.readLine();
if(cName.equalsIgnoreCase(""))
break;
command="select "+cName+" from "+tableName;
rs=sm.executeQuery(command); //执行查询
if(!rs.next())
System.out.println("表名或列名输入有误");
else {
System.out.println("查询结果为:");
do
{
result=rs.getString(cName);
//数据库语言设置为中文,不用转换编码
//result=new String(result.getBytes("ISO-8859-1"),"GB2312");
System.out.println(result);
}while(rs.next());
}
}
}catch(SQLException ex) {
System.out.println("SQLException:");
while(ex!=null) {
System.out.println("Message:"+ex.getMessage());
ex=ex.getNextException();
}
}catch(Exception e) {
System.out.println("IOException");
}
}
}

⑵ java中连接数据库的方式,有JDBC还有什么

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 名称,程序只须查找此名称就可得到一个数据库连接的对象。

⑶ 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());
}
}
}

⑷ java怎么和数据库连接

1、加载驱动程序。

处理结果两种情况:

1、执行更新返回的是本次操作影响到的记录数。

2、执行查询返回的结果是一个ResultSet对象。

ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些 行中数据的访问。

(4)java和数据库连接放在哪个层扩展阅读:


Statement

要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3 种类型:

1、执行静态SQL语句。通常通过Statement实例实现。

2、执行动态SQL语句。通常通过PreparedStatement实例实现。

3、执行数据库存储过程。通常通过CallableStatement实例实现。

⑸ Java程序为什么需要数据库连接池麻烦告诉我

。。。,各个都系出名门,都号称具有什么什么优势,更有好事者自己开发一个连接池。那为什么要引入连接池呢?换句话说引入连接池会带来什么好处呢?下面就让我们来分析一下,探测一下谜底。[编辑]解密[编辑]数据库连接的原理
数据库连接的本底上都是tcp连接,tcp连接位于osi的4层上,所有的数据库驱动都在7层上实现自己的协议。数据库连接的协议一般都是二进制的协议。应用程序和数据库每建一个数据库其实就是在底层建立了一个tcp线路,tcp线路是有底层的操作系统实现的,每个线路占用两个端口,发送端口和接收端口,这两个端口在数据交换过程中会互换角色,时而发送、时而接收。当web应用连接mysql数据库时,目标的接收端口是3306,连接时3306要被明确的指定,此时web应用方也有一个端口被占用,这个端口不需要被明确的指定,是操作系统自动分配的。操作系统的端口数是有限的,一般缺省可能是1024,不同的操作系统会有所不同,每一个socket也是占用资源的,一般叫socket的资源描述符,这些资源对于操作系统来说也是有限的,linux下通过ulimit命令可以指定更多资源。[编辑]连接无法打开原因
占用端口不释放,每一个socket在调用close后,socket会处于Time_wait状态,处于此状态的socket需要经过一段时间才能释放,这个释放时间随不同的操作系统而不同,socket的不释放导致端口不释放,再次连接时操作系统分配不出端口
socket文件描述符不释放,还是上面的原因,socket资源不释放,操作系统不能分配新的资源[编辑]建立连接的资源开销
java的数据库连接相对来说是重量级的,构建一个连接的系统开销很大,不停的关闭、创建数据库连接对应用系统来说开销太大[编辑]连接池的应用
连接池是存储、管理数据库连接的容器,应用程序把获取数据库连接的功能委托给连接池,每个连接池都有一个上限,如果连接池达到上限,应用程序线程申请连接时被堵塞,等待其他线程释放连接,每个线程使用完连接后并不马上关闭,至少把它返还给连接池。由于连接的共享,不会频繁的创建、销毁连接,因此就不会增加创建连接的开销,也不会出现socket释放延迟现象。[编辑]其他jndi连接池是整个web容器持有,容器内所有的应用共享,有可能造成应用之间的竞争
应用级的连接池,粒度较小,容易控制

⑹ java数据库连接文件在哪

一般来说,连接文件放在哪没有固定的说法,那要看你用的是什么框架,spring,struts,java,jsp,hibernate等的连接位置都不同,有的在配置文件里,有的在代码里,tomcat的server.xml中也可以配置数据库连接,如果你的再java文件中,那就从各个文件中寻找类似下面的代码:
String driver ="com.mysql.jdbc.Driver";
String url="jdbc:mysql://localhost:3306/test";
String user="root";
String password="";
try{
Class.forName(driver);
}
catch(Exception e){
System.out.println("无法加载驱动程序" +driver);
}
try{
Connection con=DriverManager.getConnection(url,user,password);
if(!con.isClosed())
System.out.println("数据库连接成功");
con.close();
}
catch(SQLException ee){
System.out.println("数据库连接失败");
}
}
}

关键在Connection con=DriverManager.getConnection(url,user,password);
这一句,java,jsp主要用这个连接的,其余的只是把这个封装了。无非需要com.mysql.jdbc.Driver,user,password这三个字段,从项目里搜索或一个一个找应该可以找到。搜索时最好用com.mysql.jdbc.Driver或其中一部分来搜索。

======================
别人给你的源程序,那说明他本来里面应该已经有链接数据库的文件了,你就不用自己写了,数据库链接可以在tomcat中也可以不在tomcat里,已经有了,就不用你自己写了,你要做的就是找到数据库链接文件,然后把里面的地址、用户名、密码改成你目前数据库的。

按照我给你的方法应该可以找到数据库链接文件。

⑺ 如何写一个与数据库相连的Java程序

一、首先你要安装好数据库,并让其运行起来。
二、在数据库中准备好你需要的表与数据。
三、下载相应的数据库连接器包,并放在JAVA所在目录下的lib子目录内。
四、参考示例程序理解各步操作的意义。

下面以MS SQL Server为例说明之。
安装、运行该数据库,并准备必要的数据。

从以下网址下载MSSQLServer的JDBC连接器包,并将其放到JAVA所在目录下的lib子目录内。

注意这是一个可运行的压缩文件,需要运行、解压得到最终的sqljdbc4.jar、sqljdbc.jar两个文件,选其一(且只能将其一)放到JAVA所在目录下的lib子目录内。

下面是一个示例文件:
请注意本例中try语块内的这一句中:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
jdbc与sqlserver的相互位置,在前一版本中这两个位置是相反的(包括教材中所使用的版本),这一点切切注意。因为微软最新将这两个包名互相调换了,而一般教材未能做相应的修改。
其他红色字体的标识符分别是库名,表名,字段名,请根据自己的设定做相应的修改。
示例代码:
//=====================================================================
//
// File: connectURL.java
//
import java.sql.*;
import com.microsoft.sqlserver.jdbc.*;
public class connectURL {
public static void main(String[] args) {

// Create a variable for the connection string.
String connectionUrl = "jdbc:sqlserver://localhost:1433;" +
"databaseName=yourDBname;integratedSecurity=true;";
// Declare the JDBC objects.
Connection con = null;
Statement stmt = null;
ResultSet rs = null;

try {
// Establish the connection.
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection(connectionUrl);

// Create and execute an SQL statement that returns some data.
String SQL = "SELECT * FROM user";
stmt = con.createStatement();
rs = stmt.executeQuery(SQL);

// Iterate through the data in the result set and display it.
while (rs.next()) {
System.out.println(rs.getString("username") + " " + rs.getString("password"));
}
}

// Handle any errors that may have occurred.
catch (Exception e) {
e.printStackTrace();
}
finally {
if (rs != null) try { rs.close(); } catch(Exception e) {}
if (stmt != null) try { stmt.close(); } catch(Exception e) {}
if (con != null) try { con.close(); } catch(Exception e) {}
}
}
}

阅读全文

与java和数据库连接放在哪个层相关的资料

热点内容
三亚卖布市场在哪里 浏览:296
车企如何突围市场 浏览:911
笔记本内存暂存的数据在哪里 浏览:428
张家港豆腐技术学费多少 浏览:91
佛山新农批市场什么名字 浏览:940
佳明什么时候发布新产品 浏览:490
放射技术中级是什么等级 浏览:836
什么叫分销商和代理商 浏览:227
手机怎么修改社保卡基础信息 浏览:416
饲料代理需要办理哪些手续 浏览:451
招标资质取消后怎么做招标代理 浏览:730
报考医学影像技术怎么样 浏览:769
如何搭建商品交易平台 浏览:248
核桃编程程序如何下载 浏览:945
如何正确泄露信息 浏览:696
二手房交易买卖双方税怎么交 浏览:439
博途怎么找下载程序的时间 浏览:37
交易平台哪个最便宜 浏览:360
外倾角数据正负35怎么计算 浏览:610
理财产品的t0模式是什么意思 浏览:389