当前位置:首页 » 操作系统 » java数据库连接原理

java数据库连接原理

发布时间: 2024-08-13 02:28:49

① 什么是java web开发中数据库的连接池技术,它的原理大致是什么

什么是连接池
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。
为什么要使用连接池
数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。 一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完都关闭连接,这样造成系统的 性能低下。 数据库连接池的解决方案是在应用程序启动时建立足够的数据库连接,并讲这些连接组成一个连接池(简单说:在一个“池”里放了好多半成品的数据库联接对象),由应用程序动态地对池中的连接进行申请、使用和释放。对于多于连接池中连接数的并发请求,应该在请求队列中排队等待。并且应用程序可以根据池中连接的使用率,动态增加或减少池中的连接数。 连接池技术尽可能多地重用了消耗内存地资源,大大节省了内存,提高了服务器地服务效率,能够支持更多的客户服务。通过使用连接池,将大大提高程序运行效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。

② java是怎么连接mysql数据库的

使用java连接MySQL数据库与其他的数据库连接核心是一样的,如果说区别,那就是所需的驱动不一样。


工具/原料

MySQL、JDK


方法/步骤

1、首先需要安装好JDK(配置环境变量),如图所示:

3、最后通过代码进行连接。

(1)确定连接路径URL:

String url="jdbc:mysql://localhost(可以是本机IP地址):3306(端口号)/mysqltest(数据库名称)?"+"user=用户账号&password=用户密码&useUnicode=字符编码";

(2)加载驱动:

Class.forName("com.mysql.jdbc.Driver");

(3)连接,获取Connection对象

Connection conn=DriverManager.getConnection(url)

(4)可以通过conn对象检验连接与否。

③ java濡备綍杩炴帴鏁版嵁搴掳纻

1銆侀栧厛绗涓姝ュ氨鏄鍦ㄧ绣涓娄笅杞戒竴涓猰ysql镄勬暟鎹搴挞┍锷╦ar鍖咃纴绫讳技mysql-connector-java-5.1.20-bin.jar銆傛柊寤轰竴涓狫AVA椤圭洰锛屽湪椤圭洰涓嬮溃鍒涘缓涓涓猯ib鏂囦欢澶癸纴灏嗛┍锷╦ar鏂囦欢𨰾疯礉鍒发ib鏂囦欢澶逛腑銆



2銆佸厜鏄𨰾疯礉鍒拌繖閲岃缮涓嶅燂纴闇瑕佸皢璇JAR鍖呭姞鍏ュ埌椤圭洰镄刡uildpath鍙橀噺涓銆傞紶镙囧彸杈-銆媌uildpath->configurebuildpath..鍦ㄥ脊鍑虹殑鐣岄溃涓镣瑰嚮Addjars阃変腑椹卞姩jar鍖呭皢涔嬫坊锷犲埌buildpath鍙橀噺涓銆



3銆佺劧钖庡垱寤轰竴涓狫AVA鏂囦欢鍐栾繛鎺ユ暟鎹搴撶殑浠g爜銆傞渶瑕佸0鏄庡洓涓鍙橀噺锛堥润镐佺殑锛屼竴鑸涓崭细淇鏀癸级銆倁rl鏄鏁版嵁搴撶殑缃戠粶鍦板潃鍙婂叾鏁版嵁搴撶殑钖岖О銆俷ame椹卞姩镄勫悕绉帮纸涓嶅悓鏁版嵁搴撴槸涓嶅悓镄勶纴鍒浜哄畾涔夌殑锲哄畾鍐欐硶锛夛纴user鏁版嵁搴撶敤鎴峰悕password鏁版嵁搴撹繛鎺ュ瘑镰併



4銆佹帴涓嬫潵灏辨槸阃氲繃鏁版嵁搴撹繛鎺ュ垱寤篊onnection瀵硅薄锛孴estDBHelper绫荤殑鏋勯犳柟娉曚紶鍏sql璇鍙ワ纴闾f牱鍦ㄤ娇鐢ㄧ殑镞跺椤氨鍙浠ョ洿鎺New瀵硅薄铹跺悗浼犲叆SQL璇鍙ユ墽琛屼简銆傝板缑鍐欎竴涓鍏抽棴杩炴帴镄勬柟娉曪纴姣忔¤块梾鏁版嵁搴扑箣钖庡繀椤诲叧闂杩炴帴銆



5銆佹帴涓嬫潵灏辨槸鍐檓ain鏂规硶娴嬭瘯鏁版嵁搴撹繛鎺ワ纴SQL璇鍙ユ墽琛岀殑缁撴灉闆嗘槸鏀惧湪ResultSet瀵硅薄涓镄勶纴濡傛灉瑕佸彇閲岄溃镄勫唴瀹瑰氨闇瑕佸惊鐜渚濇″彇鍑恒备娇鐢ㄥ畬涔嫔悗璁板缑鍏抽棴鏁版嵁搴撹繛鎺ャ



6銆佹渶钖庡氨鏄镆ョ湅鎺у埗鍙扮殑杈揿嚭淇℃伅锛屾瘆杈冨拰鏁版嵁搴撹〃涓镄勪俊鎭鏄钖︿竴镊淬傚彟澶栨垜杩欓噷镄勮〃鍙链変袱涓瀛楁碉纴濡傛灉链夊氢釜瀛楁垫寜镦ret.getString(2);ret.getString(3);渚濇″线钖庨溃鍙栧氨鍙浠ヤ简銆



𨰾揿𪾢璧勬枡锛

Java鏄鐢盨un鍏鍙镐簬1995骞5链堟帹鍑虹殑闱㈠悜瀵硅薄镄勭▼搴忚捐¤瑷銆

Java缁ф圹浜咰++璇瑷闱㈠悜瀵硅薄鎶链镄勬牳蹇冿纴鍙堣垗寮冧简C++璇瑷涓镄勬寚阍堛佽繍绠楃﹂吨杞戒互鍙婂氶吨缁ф圹镄勭壒镐э纴钖屾椂寮曞叆浜嗘硾鍨嬬紪绋嬨佺被鍨嫔畨鍏ㄧ殑鏋氢妇绛夌壒镐э纴浣縅ava鎴愪负绠鍗曘侀溃钖戝硅薄銆佸垎甯冨纺銆佽В閲婃с佸仴澹銆佸畨鍏ㄤ笌绯荤粺镞犲叧銆佸彲绉绘嶃侀珮镐ц兘銆佸氱嚎绋嫔拰锷ㄦ佺殑璇瑷銆

闅忕潃浜掕仈缃戠殑杩呯寷鍙戝𪾢锛孞ava宸茬粡鎴愪负閲嶈佺殑缃戠粶缂栫▼璇瑷锛岃骞挎硾搴旂敤浜庝紒涓氱骇Web搴旂敤寮鍙戝拰绉诲姩搴旂敤寮鍙戙

Java鐪嬭捣𨱒ヨ捐″缑寰埚儚C++锛屼絾鏄涓轰简浣胯瑷灏忓拰瀹规槗镡熸倝锛岃捐¤呬滑鎶奀++璇瑷涓璁稿氩彲鐢ㄧ殑鐗瑰緛铡绘帀浜嗭纴杩欎簺鐗瑰緛鏄涓鑸绋嫔簭锻桦緢灏戜娇鐢ㄧ殑銆备緥濡傦纴Java涓嶆敮鎸乬oto璇鍙ワ纴浠d箣浠ユ彁渚沚reak鍜宑ontinue璇鍙ヤ互鍙婂纾甯稿勭悊銆侸ava杩桦墧闄や简C++镄勬搷浣灭﹁繃杞斤纸overload锛夊拰澶氱户镓跨壒寰侊纴骞朵笖涓崭娇鐢ㄤ富鏂囦欢锛屽厤铡讳简棰勫勭悊绋嫔簭銆傚洜涓筼ava娌℃湁缁撴瀯锛屾暟缁勫拰涓查兘鏄瀵硅薄锛屾墍浠ヤ笉闇瑕佹寚阍堛侸ava鑳藉熻嚜锷ㄥ勭悊瀵硅薄镄勫紩鐢ㄥ拰闂存帴寮旷敤锛屽疄鐜拌嚜锷ㄧ殑镞犵敤鍗曞厓鏀堕泦锛屼娇鐢ㄦ埛涓嶅繀涓哄瓨鍌ㄧ$悊闂棰樼储鎭硷纴鑳芥洿澶氱殑镞堕棿鍜岀簿锷涜姳鍦ㄧ爷鍙戜笂銆

④ 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连接数据库

1、首先我们先建好数据库,然后建立好程序的目录,因为是适用于初学者的,所以就建立一个简单的java project,如图。

⑥ Java里面的JDBC是什么意思啊

Java数据库连接是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。

这种类型的驱动把所有JDBC的调用传递给ODBC,再让后者调用数据库本地驱动代码(也就是数据库厂商提供的数据库操作二进制代码库,例如Oracle中的oci.dll)。

API概述

JDBC API主要位于JDK中的java.sql包中(之后扩展的内容位于javax.sql包中),主要包括(斜体代表接口,需驱动程序提供者来具体实现):

DriverManager:负责加载各种不同驱动程序(Driver),并根据不同的请求,向调用者返回相应的数据库连接(Connection)。Driver:驱动程序,会将自身加载到DriverManager中去,并处理相应的请求并返回相应的数据库连接(Connection)。Connection:数据库连接,负责与进行数据库间通讯,SQL执行以及事务处理都是在某个特定Connection环境中进行的。

可以产生用以执行SQL的Statement。Statement:用以执行SQL查询和更新(针对静态SQL语句和单次执行)。PreparedStatement:用以执行包含动态参数的SQL查询和更新(在服务器端编译,允许重复执行以提高效率)。CallableStatement:

用以调用数据库中的存储过程。SQLException:代表在数据库连接的建立和关闭和SQL语句的执行过程中发生了例外情况(即错误)。

⑦ 彻底搞懂JDBC的运行过程

前几天笔者发布了博客,手写mybatis彻底搞懂框架原理。为了帮助初学者更好理解mybatis框架,这次讲解一下Java的JDBC的运行过程。

JDBC的作用

JDBC的全称是Java DataBase Connection,也就是Java数据库连接,我们可以用它来操作关系型数据库。JDBC接口及相关类在java.sql包和javax.sql包里。我们可以用它来连接数据库,执行SQL查询,存储过程,并处理返回的结果。

JDBC接口让Java程序和JDBC驱动实现了松耦合,使得切换不同的数据库变得更加简单。

JDBC的连接步骤

执行一次JDBC连接,分六个步骤进行:

1. 导入包

在程序中包含数据库编程所需的JDBC类。大多数情况下,使用 import java.sql.* 就足够了

2. 注册JDBC驱动程序

需要初始化驱动程序,这样就可以打开与数据库的通信。

3. 打开一个连接

使用DriverManager.getConnection()方法来创建一个Connection对象,它代表一个数据库的物理连接。

4. 执行一个查询

需要使用一个类型为Statement或PreparedStatement的对象(两者区别看后文),并提交一个SQL语句到数据库执行查询。

5. 从结果集中提取数据

这一步中演示如何从数据库中获取查询结果的数据。使用ResultSet.getXXX()方法来检索的数据结果

6. 清理环境资源

在使用JDBC与数据交互操作数据库中的数据后,应该明确地关闭所有的数据库资源以减少资源的浪费。本文使用了try with resources方式关闭资源,这是JDK7的语法糖,读者可自行搜索。

完整代码如下。

JDBC的最佳实践

JDBC是如何实现Java程序和JDBC驱动的松耦合?

JDBC API使用Java的反射机制来实现Java程序和JDBC驱动的松耦合。看一下上文的JDBC示例,你会发现所有操作都是通过JDBC接口完成的,而驱动只有在通过Class.forName反射机制来加载的时候才会出现。

这是Java核心库里反射机制的最佳实践之一,它使得应用程序和驱动程序之间进行了隔离,让迁移数据库的工作变得更简单。

Statement和PreparedStatement区别

预编译

创建时的区别:

执行时的区别:

由上可以看出,PreparedStatement有预编译的过程,已经绑定sql,之后无论执行多少次,都不会再去进行编译,而Statement 不同,如果执行多次,则相应的就要编译多少次sql,所以从这点看,PreparedStatement的效率会比Statement要高一些。PreparedStatement是预编译的,所以可以有效的防止SQL注入等问题

占位符

PrepareStatement可以替换变量在SQL语句中可以包含?,可以用?替换成变量。

而Statement只能用字符串拼接。

JDBC的ResultSet

在查询数据库后会返回一个ResultSet,它就像是查询结果集的一张数据表。

ResultSet对象维护了一个游标,指向当前的数据行。开始的时候这个游标指向的是第一行。如果调用了ResultSet的next()方法游标会下移一行,如果没有更多的数据了,next()方法会返回false。可以在for循环中用它来遍历数据集。

默认的ResultSet是不能更新的,游标也只能往下移。也就是说你只能从第一行到最后一行遍历一遍。不过也可以创建可以回滚或者可更新的ResultSet,像下面这样。

当生成ResultSet的Statement对象要关闭或者重新执行或是获取下一个ResultSet的时候,ResultSet对象也会自动关闭。

可以通过ResultSet的getter方法,传入列名或者从1开始的序号来获取列数据。

ResultSet的不同类型

根据创建Statement时输入参数的不同,会对应不同类型的ResultSet。如果你看下Connection的方法,你会发现createStatement和prepareStatement方法重载了,以支持不同的ResultSet和并发类型。

ResultSet对象有三种类型。

ResultSet有两种并发类型。

⑧ java杩炴帴access鏁版嵁搴撶殑涓夌嶆柟寮忎互鍙婅繙绋嬭繛鎺ュ疄鐜颁唬镰佸强鏁欑▼

杩炴帴access鏁版嵁搴掳纴缃戜笂镄勫唴瀹瑰緢澶氾纴灏濊瘯镄勮繃绋嬩腑涔熶细阆囧埌钖勭嶉梾棰桡纴娌℃湁鐗瑰埆濂界殑浠嬬粛锛屾墍浠ヨ嚜宸辨兂镐荤粨涓涓嬶纴镞ュ悗澶囩敤銆

杩欓噷闇瑕佹彁鍓嶈存槑涓嬶纴win7绯荤粺32bit鍜64bit榛樿ゅ畨瑁呯殑access閮芥槸32bit镄勶纴浣嗘槸濡傛灉鏄64bit镄勭郴缁熻繛鎺access鏁版嵁搴撴椂闇瑕佸畨瑁64bit镄刼ffice杞浠讹纴涓嬮溃浼氲村埌銆

浠64bit镎崭綔绯荤粺涓哄垪

绗涓绉嶏细鐢佃剳涓婇厤缃缁揿悎java浠g爜瀹炵幇

a.镓揿紑鐩褰旵:WindowsSystem32镓惧埌odbcad32.exe鏂囦欢锛屽弻鍑绘墦寮



b.镣瑰嚮鍙充晶娣诲姞鎸夐挳锛屽湪鍒楄〃涓阃夋嫨access鏁版嵁搴挞┍锷


杩欎釜鍦版柟瑕佹敞镒忥纴浣跨敤绾痡ava瀹炵幇杩炴帴access鏁版嵁搴撶殑镞跺欓渶瑕佸啓access镄勯┍锷锛岃宎ccess镄勯┍锷ㄥ悕绉版槸镙规嵁杩欓噷鍐欑殑锛屼篃灏辨槸浣犳湰链烘湁镄勯┍锷锛岃屼笉鏄缃戜笂璇寸殑浠涔堣佹湁绌烘牸锛岃佹妸*.mdb, *.accdb鎹㈡垚*.mdb鎴栬*.accdb涔嬬被銆傚洜姝よ繖閲岄渶瑕佹敞镒忋傚彟澶栬缮鍙鑳芥湁涓闂棰樸傛湁鍙鑳界偣鍑绘坊锷犵殑镞跺栾繖閲屽苟娌℃湁access椹卞姩锛屾垨钥呮姤阌橻Microsoft][ODBC 椹卞姩绋嫔簭绠$悊鍣╙ 链鍙戠幇鏁版嵁婧愬悕绉板苟涓旀湭鎸囧畾榛樿ら┍锷ㄧ▼搴忔椂锛


杩欎釜镞跺欑绣涓娄笅杞戒竴涓狝ccessDatabaseEngine_X64.exe锛屽傛灉鏄32bit镎崭綔绯荤粺鐩稿簲镄勪笅杞紸ccessDatabaseEngine_X32.exe鍗冲彲,镣瑰嚮涓嬭浇64bit椹卞姩

c.镣瑰嚮瀹屾垚鍑虹幇涓嫔垪瀵硅瘽妗嗭纴鏁版嵁婧愬悕绉伴殢镒忓~鍐欙纴璇存槑鍙链夊彲镞狅纴灏辨槸瀵规暟鎹婧愮殑鎻忚堪锛岀偣鍑婚夋嫨鎸夐挳阃夋嫨鏁版嵁搴撴墍鍦ㄧ殑璺寰


d.镣瑰嚮纭瀹氭寜阍钖庡氨鍙浠ュ湪ODBC鏁版嵁婧愮$悊鍣ㄤ腑鐪嫔埌娣诲姞镄勬暟鎹婧


e.涓嬮溃鏄痡ava镄勪唬镰

package com.xu.bean;

 

import java.io.UnsupportedEncodingException;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

 

public class ConnectAccessDatabase {

public static void main(String[] args) {

try {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

String url = "jdbc:odbc:databaseName";//databaseName灏辨槸鍒氩垰娣诲姞镄勬暟鎹婧愬悕绉

Connection con = DriverManager.getConnection(url, "", "");//娌℃湁鐢ㄦ埛钖嶅拰瀵嗙爜镄勬椂鍊欑洿鎺ヤ负绌

Statement sta = con.createStatement();

ResultSet rst = sta.executeQuery("select * from demoTable");//demoTable涓篴ccess鏁版嵁搴扑腑镄勪竴涓琛ㄥ悕

if(rst.next()){

System.out.println(rst.getString("name"));

//瑙e喅涔辩爜闂棰

// System.out.println(new String(rst.getBytes("name"), "gbk"));

}

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

} /*catch (UnsupportedEncodingException e) {

e.printStackTrace();

}*/

 

}

}

铹跺悗杩愯屼唬镰佸嵆鍙


绗浜岀嶆柟寮忥细绾痡iava瀹炵幇

a.杩欓噷闇瑕佹敞镒忕殑灏辨槸url闾i噷锛屽墠闱涔熸彁鍒拌繃鏄镙规嵁鐢佃剳链鍦版湁镄勯┍锷ㄥ啓镄

package com.xu.bean;

 

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

 

/**

* 绾痡ava浠g爜瀹炵幇 杩炴帴access鏁版嵁搴

* @author xuyl

*

*/

public class ConnectAccessDatabase2 {

public static void main(String[] args) {

try {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=E:\demo.mdb";

Connection con = DriverManager.getConnection(url, "", "");//娌℃湁鐢ㄦ埛钖嶅拰瀵嗙爜镄勬椂鍊欑洿鎺ヤ负绌

Statement sta = con.createStatement();

ResultSet rst = sta.executeQuery("select * from demoTable");//demoTable涓篴ccess鏁版嵁搴扑腑镄勪竴涓琛ㄥ悕

if(rst.next()){

System.out.println("绾痡ava浠g爜瀹炵幇:" + rst.getString("name"));

}

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

}

 

}

}

b.杩愯岀粨鏋


绗涓夌嶆柟寮忥细浣跨敤RmiJdbc.jar锛堜篃鏄杩灭▼杩炴帴镄勬柟娉曪级浠ヨ繙绋嬭繛鎺ヤ负渚

棣栧厛涓嬭浇RmiJdbc.jar

鍦ㄦ斁缃瓵ccess鏁版嵁搴撶殑鐢佃剳涓婇厤缃

1.閰岖疆RmiJDbc.jar鐜澧冨彉閲忥纸鍦ㄨ繖涔嫔墠杩橀渶瑕侀厤缃甹dk鐜澧冿纴jdk閰岖疆鍙镊琛岀栌搴︼级​

瑙e帇缂㏑miJdbc3.3.zip锛屽皢瑙e帇鍑虹殑鏂囦欢鏀惧湪浠绘剰鐩樼︺傚彸阌璁$畻链洪夋嫨灞炴 - 阃夋嫨楂樼骇绯荤粺璁剧疆 - 阃夋嫨鐜澧冨彉閲 - 鍦ㄧ郴缁熷彉閲忎腑镓惧埌CLASSPATH阃変腑镣瑰嚮缂栬緫鎸夐挳鍦ㄦ渶钖庨溃娣诲姞%CLASSPATH%;D:RmiJdbc3.3RmiJdbcdistlibRmiJdbc.jar锛堜互鏀惧湪d鐩樿窡鐩褰曚负渚嬶级

2.钖锷≧miJbdc.jar链嶅姟

win + r 寤烘墦寮杩愯岀獥鍙h緭鍏cmd镓揿紑锻戒护绐楀彛杈揿叆

java -jar D:RmiJdbc3.3RmiJdbcdistlibRmiJdbc.jar鍑虹幇涓嫔浘镓绀哄嵆閰岖疆鎴愬姛銆


钖锷ㄤ箣钖庨渶瑕佷竴鐩磋繍琛屻

3.閰岖疆鏁版嵁婧

镙规嵁涓婇溃镄勬柟娉曢厤缃濂芥暟鎹婧

4.java浠g爜

public static String executeQuery(String sql) {

log.info("===========executeQuery start=============");

String jsonArray = "{";

StringBuilder jsonObject = new StringBuilder();

Connection con = null;

Statement stmt = null;

ResultSet rst = null;

try{

//娉ㄥ唽鏁版嵁鎻愪緵绋嫔簭

Class.forName("org.objectweb.rmijdbc.Driver").newInstance();

//accessDatabase涓鸿繙绋嬫湇锷″櫒鏁版嵁婧愬悕绉

// String url = "jdbc:rmi://10.23.16.83/jdbc:odbc:accessDatabase";

//鐢熶骇鍦板潃

String url = "jdbc:rmi://10.23.10.6/jdbc:odbc:accessDatabase";

// String url = "jdbc:rmi://10.23.71.211/jdbc:odbc:demo";

//寤虹珛杩炴帴

con = DriverManager.getConnection(url, "", "");

stmt = con.createStatement();

rst = stmt.executeQuery(sql);

if(rst != null){

while(rst.next()){

String id = rst.getInt("id") + "";

String name = new String(rst.getBytes("title"), "gbk");

String time = rst.getDate("adate").toString();

String filePath = rst.getString("url");

jsonObject.append("{"ID":"" + id + "", "NAME":"" + name + "", "FILE_PATH":"" + filePath + "", "TIME":"" + time + ""}, ");

}

String temp = jsonObject.toString();

temp = temp.substring(0, temp.length() - 2);

jsonArray += ""IS_EMPTY":"N",LIST:[" + temp + "]}";

}else{

jsonArray += ""IS_EMPTY":"Y"}";

}

}catch(Exception e){

log.info("===========executeQuery start=============" + e.getMessage());

}finally{

try {

con.close();

stmt.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

log.info("===========executeQuery end=============");

return jsonArray;

}

浠ヤ笂灏辨槸涓夌嶈块梾access鏁版嵁搴撶殑鏂规硶

⑨ 如何实现java与数据库的连接

JDBC连接数据库
•创建一个以JDBC连接数据库的程序,包含7个步骤:
1、加载JDBC驱动程序:
在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),
这通过java.lang.Class类的静态方法forName(String className)实现。
例如:
try{
//加载MySql的驱动类
Class.forName("com.mysql.jdbc.Driver") ;
}catch(ClassNotFoundException e){
System.out.println("找不到驱动程序类 ,加载驱动失败!");
e.printStackTrace() ;
}
成功加载后,会将Driver类的实例注册到DriverManager类中。
2、提供JDBC连接的URL
•连接URL定义了连接数据库时的协议、子协议、数据源标识。
•书写形式:协议:子协议:数据源标识
协议:在JDBC中总是以jdbc开始
子协议:是桥连接的驱动程序或是数据库管理系统名称。
数据源标识:标记找到数据库来源的地址与连接端口。
例如:(MySql的连接URL)
jdbc:mysql:
//localhost:3306/test?useUnicode=true&characterEncoding=gbk ;
useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为
gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。
3、创建数据库的连接
•要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,
该对象就代表一个数据库的连接。
•使用DriverManager的getConnectin(String url , String username ,
String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和
密码来获得。
例如:
//连接MySql数据库,用户名和密码都是root
String url = "jdbc:mysql://localhost:3306/test" ;
String username = "root" ;
String password = "root" ;
try{
Connection con =
DriverManager.getConnection(url , username , password ) ;
}catch(SQLException se){
System.out.println("数据库连接失败!");
se.printStackTrace() ;
}
4、创建一个Statement
•要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3
种类型:
1、执行静态SQL语句。通常通过Statement实例实现。
2、执行动态SQL语句。通常通过PreparedStatement实例实现。
3、执行数据库存储过程。通常通过CallableStatement实例实现。
具体的实现方式:
Statement stmt = con.createStatement() ;
PreparedStatement pstmt = con.prepareStatement(sql) ;
CallableStatement cstmt =
con.prepareCall("{CALL demoSp(? , ?)}") ;
5、执行SQL语句
Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate
和execute
1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句
,返回一个结果集(ResultSet)对象。
2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或
DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等
3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的
语句。
具体实现的代码:
ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;
int rows = stmt.executeUpdate("INSERT INTO ...") ;
boolean flag = stmt.execute(String sql) ;
6、处理结果
两种情况:
1、执行更新返回的是本次操作影响到的记录数。
2、执行查询返回的结果是一个ResultSet对象。
• ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些
行中数据的访问。
• 使用结果集(ResultSet)对象的访问方法获取数据:
while(rs.next()){
String name = rs.getString("name") ;
String pass = rs.getString(1) ; // 此方法比较高效
}
(列是从左到右编号的,并且从列1开始)
7、关闭JDBC对象
操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声
明顺序相反:
1、关闭记录集
2、关闭声明
3、关闭连接对象
if(rs != null){ // 关闭记录集
try{
rs.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(stmt != null){ // 关闭声明
try{
stmt.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(conn != null){ // 关闭连接对象
try{
conn.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}

热点内容
行车记录仪存储卡已满怎么办 发布:2024-11-25 13:35:35 浏览:189
proclinux进程 发布:2024-11-25 13:34:35 浏览:216
为什么服务器不同步 发布:2024-11-25 13:31:58 浏览:650
电脑新服务器地址 发布:2024-11-25 13:24:02 浏览:918
视频压缩安卓 发布:2024-11-25 13:02:18 浏览:341
当贝上传应用 发布:2024-11-25 13:01:23 浏览:272
中国联通湖北服务器地址 发布:2024-11-25 13:00:38 浏览:747
访问内网计算机 发布:2024-11-25 12:37:53 浏览:969
苹果文件夹名字大全 发布:2024-11-25 12:28:03 浏览:590
ipad上b站缓存分屏 发布:2024-11-25 12:27:59 浏览:981