當前位置:首頁 » 數據倉庫 » jdbc連接db2資料庫實例
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

jdbc連接db2資料庫實例

發布時間: 2022-07-31 10:25:50

A. Java連接DB2資料庫問題

你加兩句列印看看.
//這里加入一行
System.out.println("con:"+this.con);
pstmt=this.con.prepareStatement(sql) ;
//這里加一行
System.out.println("pstmt:"+pstmt);
rs=pstmt.executeQuery();
//這里加一行
System.out.println("rs:"+rs);

看哪個是null

B. Eclipse中Java如何連接DB2資料庫

新建java工程

在java代碼中輸入如下代碼

importjava.sql.*;
publicclassDB2conn{
/**設置參數**/
privatestaticConnectionconn=null;
privatestaticStatementstmt=null;
privatestaticResultSetrs=null;

/**構造方法,鏈接資料庫**/
publicDB2conn(){
try{
System.out.println("正在連接資料庫..........");
Class.forName("com.ibm.db2.jcc.DB2Driver");//載入mysql驅動程序類
Stringurl="jdbc:db2://localhost:50000/toolsdb";//url為連接字元串
Stringuser="db2admin";//資料庫用戶名
Stringpwd="1234";//資料庫密碼
conn=(Connection)DriverManager.getConnection(url,user,pwd);
System.out.println("資料庫連接成功!!!");
}catch(Exceptione){
System.out.println(e.getMessage());
//e.printStackTrace();
}
}
publicstaticvoidmain(String[]args)throwsSQLException{
DB2conna=newDB2conn();//實例化對象,作用是調用構造方法
a.getClass();//無意義
/**查詢語句**/
Stringsql="select*fromperson";
stmt=(Statement)conn.createStatement();
stmt.execute(sql);//執行select語句用executeQuery()方法,執行insert、update、delete語句用executeUpdate()方法。
rs=(ResultSet)stmt.getResultSet();
while(rs.next()){//當前記錄指針移動到下一條記錄上
inti=rs.getInt(1);//得到當前記錄的第一個欄位(id)的值
Stringname=rs.getString(2);//得到第二個欄位(name)的值
Stringpsw=rs.getString("ppassword");//得到(password)的值
System.out.println(Integer.toString(i)+""+name+""+psw);
}
rs.close();//後定義,先關閉
stmt.close();
conn.close();//先定義,後關閉
}
}

C. JAVA JDBC連接DB2資料庫問題

JAVA連接DB2
/**了解基礎情況**/ 對於Java程序員而言,DB2 提供了兩種應用程序編程介面(API):JDBC 和 SQLJ。

JDBC:
JDBC 驅動程序分為舊的/CLI 驅動程序<db2java.zip>和新的通用 JDBC 驅動程序(Universal JDBC Driver)<db2jcc.jar>。
JDBC 是一個與供應商無關的動態 SQL 介面,該介面通過標准化的 Java 方法向您的應用程序提供數據訪問
JDBC 類似於 DB2 CLI,因為您無須預編譯應用程序代碼,也無須將軟體包綁定到 DB2 資料庫。
作為一個與供應商無關的標准,JDBC 應用程序提供了更多的可移植性—這是當今異構業務基礎設施所必需的優點。
在執行 JDBC 應用程序期間,驅動程序將針對當前連接的 DB2 資料庫伺服器驗證 SQL 語句。
訪問期間的任何問題都會作為 Java 異常與相應的 SQLSTATE 和 SQLCODE 一起報告給應用程序。
SQLJ:
SQLJ 是一個用於從 Java 應用程序進行數據訪問的標准開發模型。
SQLJ API 是在 SQL 1999 規范中定義的。

新的通用 JDBC 驅動程序在一個實現中同時為 JDBC 和 SQLJ API 提供了支持。
JDBC 和 SQLJ 可以在同一個應用程序中互操作。
SQLJ 提供了獨特的使用靜態 SQL 語句進行開發以及在 DB2 包級別控制訪問的能力。

/**JDBC連接方式分析**/
JDBC 驅動程序體系結構分為四種類型:Type1,Type2,Type3,Type4。

Type1:
驅動程序基於 JDBC-ODBC 橋。
因此 ODBC 驅動程序可以與此類 JDBC 驅動程序(由 Sun 提供)結合起來使用。
IBM 不支持 Type 1 驅動程序,因此它不是推薦的環境。
Type2:
驅動程序依靠特定於操作系統的庫(共享庫)來與 RDBMS 通信。
應用程序將裝入這種 JDBC 驅動程序,而驅動程序將使用共享庫來與 DB2 伺服器通信。
DB2 UDB for Linux, UNIX和 WindowsV8.1 提供了兩種不同的 Type 2 驅動程序:
<1> 舊的/CLI JDBC 驅動程序在文件db2java.zip中提供。
其實現包名稱為COM.ibm.db2.jdbc.app.DB2Driver。
該驅動程序目前已被用於進行 J2EE 認證。
其別名「app 驅動程序」源自於一種觀念及其包名稱,
這種觀念就是:此驅動程序將通過遠程資料庫的本地 DB2 UDB 客戶機執行本地連接。
<2> 通用 JDBC 驅動程序在文件db2jcc.jar中提供。
其實現包名稱為com.ibm.db2.jcc.DB2Driver。
此驅動程序是 DB2 UDB for Linux, UNIX 和 Windows V8.1 中的新功能。
在最初的實現(V8.1)中,此驅動程序用於使用 Type 4 驅動程序體系結構與 DB2 伺服器進行直接的 Java 連接。
在 DB2 V8.1.2 中,您可以在 Type 2 體系結構中使用此驅動程序。
在 Type 2 體系結構中使用此驅動程序的一個主要原因是為了本地應用程序性能和分布式事務支持。
通用 JDBC Type 2 驅動程序分別使用com.ibm.db2.jcc.DB2XADataSource和com.ibm.db2.jcc.DB2ConnectionPoolDataSource來支持分布式事務和連接池。 註:在將來的版本中不會對舊的/CLI Type 2 驅動程序進行增強。
Type3:
驅動程序是一種純 Java 實現,它必須與 DB2 JDBC Applet 伺服器(DB2 JDBC Applet Server)通信才能訪問 DB2 數據。
此類驅動程序旨在使 Java applet 能訪問 DB2 數據源。
常被稱作「網路(net)驅動程序」,它是根據其包名COM.ibm.db2.jdbc.net命名的。DB2 V8.1 支持網路驅動程序,可以將其用於 JDBC 應用程序。
要求db2java.zip驅動程序總是處於與 DB2 Applet 伺服器相同的維護級別。
如果驅動程序在 applet 內使用,這就不是一個問題,因為瀏覽器會在應用程序執行期間下載相應的db2java.zip文件。
許多客戶使用 Type3 驅動程序而不是 Type2 驅動程序,以避免必需的 DB2 客戶機安裝和必需的DB2 CATALOG DATABASE命令,後者用於創建使用舊的/CLI 驅動程序進行 Type 2 連接所必需的資料庫目錄信息。
目前,WebSphere Application Server 和其它 J2EE 伺服器不支持 IBM Type 3 驅動程序,因為該驅動程序不支持分布式事務(JTA)。
將來的版本不會對 Type 3 驅動程序進行增強。

鼓勵使用通用 JDBC Type 4 驅動程序來替代 Type 3 驅動程序。

Type4:
驅動程序是僅用於 Java 的 JDBC 驅動程序,它直接連接到資料庫伺服器。
DB2 UDB for Linux, UNIX 和 Windows V8.1 引入了稱為「通用 JDBC 驅動程序(Universal JDBC driver)」的 Type 4 驅動程序。
通用 JDBC 驅動程序在文件db2jcc.jar中提供。
其實現包名為com.ibm.db2.jcc.DB2Driver。
請注意,通用 Type 2 和通用 Type 4 驅動程序具有相同的實現類名稱。
有兩種方法可以區別 DB2 在內部將實例化哪個驅動程序:
使用連接特性來確定連接是否使用共享庫(Type2),或者驅動程序是否會啟動來自 Java 應用程序的直接連接(Type4)。
重要:就 DB2 UDB V8.1.2 而言,通用 JDBC 驅動程序要求 CLASSPATH 中有許可證 JAR 文件和db2jcc.jar文件。
以下是所需的許可證 JAR 文件:
Cloudscape Network Server V5.1:db2jcc_license_c.jar
DB2 UDB V8 for Linux, UNIX 和 Windows 伺服器:db2jcc_license_su.jar
DB2 UDB for iSeries and z/OS 伺服器(與 DB2 Connect 和 DB2 Enterprise Server Edition 一起提供):db2jcc_license_cisuz.jar ****************************************************************驅動程序類型:db2java.zip, db2jcc.jar
注意:假如你使用db2java.zip,且web伺服器使用Tomcat的話,請將db2java.zip改名為db2java.jar,最好將zip解壓再用jar命令打包,直接改文件類型也行(呵呵,按照jar文件嚴格意義上來講這是不符合文法的<少了描述性文件:MANIFEST.MF>,能用就行)
還有一般情況下:就是使用 db2java.zip的話需要安裝db2客戶端, 使用db2jcc.jar是通過網路直接來連接的無需安裝db2客戶端(假如用在type2上還是要裝客戶端的)type2:
使用<db2java.zip>:
jdbc.driverClassName=COM.ibm.db2.jdbc.app.DB2Driver
jdbc.url=jdbc:db2:dataBaseName

假如你的工具使用的是myeclipse且使用的是tomcat plugin的話,請將db2jdbc.dll 拷貝到 %JAVA_HOME%/bin下,否則不行地啦
<是不是其他類型的使用db2java.zip驅動也有這個問題呢,不知道,沒試過,有空試一下>

使用<db2jcc.jar>:
jdbc.driverClassName=com.ibm.db2.jcc.DB2Driver
jdbc.url=jdbc:db2:dataBaseName

type3:
驅動:db2java.zip
jdbc.driverClassName=COM.ibm.db2.jdbc.net.DB2Driver
jdbc.url=jdbc:db2://ip:6789/DBNAME
注意:要在資料庫上執行 db2jstrt 6789 (這句啟動了db2jd進程,6789是默認的伺服器偵聽jdbc2連接的埠,也可以設置成另外的任意不沖突的埠。)

type4:
驅動:db2jcc.jar
資料庫字元集必須設置為utf-8
jdbc.driverClassName=com.ibm.db2.jcc.DB2Driver
jdbc.url=jdbc:db2://ip:port/DBNAME

D. java JDBC連接不同的資料庫寫法sql,oracle,mysql

JDBC連接不同資料庫的寫法如下:


1、Oracle8/8i/9i資料庫(thin模式)

Class.forName("oracle.jdbc.driver.OracleDriver");
Stringurl="jdbc:oracle:thin:@localhost:1521:orcl";//orcl為資料庫的SID
Stringuser="test";
Stringpassword="test";
Connectionconn=DriverManager.getConnection(url,user,password);

2、SQL Server2005及以上版本資料庫

Class.forName("com.microsoft.sqlserver.SQLServerDriver");
Stringurl="jdbc:sqlserver://localhost:1433;DatabaseName=mydb";
//mydb為資料庫
Stringuser="sa";
Stringpassword="";
Connectionconn=DriverManager.getConnection(url,user,password);


3、MySQL資料庫

Class.forName("com.mysql.jdbc.Driver");
Stringurl="jdbc:mysql://localhost/myDB?
user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"
//myDB為資料庫名
Connectionconn=DriverManager.getConnection(url);



4、DB2資料庫

Class.forName("com.ibm.db2.jdbc.app.DB2Driver").newInstance();
Stringurl="jdbc:db2://localhost:5000/sample";//sample為你的資料庫名
Stringuser="admin";
Stringpassword="";
Connectionconn=DriverManager.getConnection(url,user,password);

5、Sybase資料庫

Class.forName("com.sybase.jdbc.SybDriver").newInstance();
Stringurl="jdbc:sybase:Tds:localhost:5007/myDB";//myDB為你的資料庫名
PropertiessysProps=System.getProperties();
SysProps.put("user","userid");
SysProps.put("password","user_password");
Connectionconn=DriverManager.getConnection(url,SysProps);


6、Informix資料庫

Class.forName("com.informix.jdbc.IfxDriver").newInstance();
Stringurl="jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver;
user=testuser;password=testpassword";//myDB為資料庫名
Connectionconn=DriverManager.getConnection(url);

7、PostgreSQL資料庫

Class.forName("org.postgresql.Driver").newInstance();
Stringurl="jdbc:postgresql://localhost/myDB"//myDB為資料庫名
Stringuser="myuser";
Stringpassword="mypassword";
Connectionconn=DriverManager.getConnection(url,user,password);


8、access資料庫直連用ODBC的


Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Stringurl="jdbc:odbc:Driver={MicroSoftAccessDriver
(*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb");
Connectionconn=DriverManager.getConnection(url,"","");
StatementstmtNew=conn.createStatement();

E. 使用jdbc訪問DB2的例子,從連接資料庫到查詢結果都有的,最好帶上注釋

jdbc的例子網上很多,很容易找,找到後把driver 和連接換成db2的就可以了,其它不用改。通用的。

F. Eclipse中JDBC各資料庫怎樣連接

MySQL:
String Driver="com.mysql.jdbc.Driver"; //驅動程序
String URL="jdbc:mysql://localhost:3306/db_name"?useUnicode=true&characterEncoding=UTF-8; //連接的URL,db_name為資料庫名,注意修改編碼類型
String Username="username"; //用戶名
String Password="password"; //密碼
Class.forName(Driver).new Instance();
Connection con=DriverManager.getConnection(URL,Username,Password);
Microsoft SQL Server 2.0驅動(3個jar的那個):
String Driver="com.microsoft.jdbc.sqlserver.SQLServerDriver"; //連接SQL資料庫的方法
String URL="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_name"; //db_name為資料庫名
String Username="username"; //用戶名
String Password="password"; //密碼
Class.forName(Driver).new Instance(); //載入數據可驅動
Connection con=DriverManager.getConnection(URL,UserName,Password); //
Microsoft SQL Server 3.0驅動(1個jar的那個): // 老紫竹完善
String Driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"; //連接SQL資料庫的方法
String URL="jdbc:sqlserver://localhost:1433;DatabaseName=db_name"; //db_name為資料庫名
String Username="username"; //用戶名
String Password="password"; //密碼
Class.forName(Driver).new Instance(); //載入數據可驅動
Connection con=DriverManager.getConnection(URL,UserName,Password); //
Sysbase:
String Driver="com.sybase.jdbc.SybDriver"; //驅動程序
String URL="jdbc:Sysbase://localhost:5007/db_name"; //db_name為數據可名
String Username="username"; //用戶名
String Password="password"; //密碼
Class.forName(Driver).newInstance();
Connection con=DriverManager.getConnection(URL,Username,Password);
Oracle(用thin模式):
String Driver="oracle.jdbc.driver.OracleDriver"; //連接資料庫的方法
String URL="jdbc:oracle:thin:@loaclhost:1521:orcl"; //orcl為資料庫的SID
String Username="username"; //用戶名
String Password="password"; //密碼
Class.forName(Driver).newInstance(); //載入資料庫驅動
Connection con=DriverManager.getConnection(URL,Username,Password);
PostgreSQL:
String Driver="org.postgresql.Driver"; //連接資料庫的方法
String URL="jdbc:postgresql://localhost/db_name"; //db_name為數據可名
String Username="username"; //用戶名
String Password="password"; //密碼
Class.forName(Driver).newInstance();
Connection con=DriverManager.getConnection(URL,Username,Password);
DB2:
String Driver="com.ibm.db2.jdbc.app.DB2.Driver"; //連接具有DB2客戶端的Provider實例
//String Driver="com.ibm.db2.jdbc.net.DB2.Driver"; //連接不具有DB2客戶端的Provider實例
String URL="jdbc:db2://localhost:5000/db_name"; //db_name為數據可名
String Username="username"; //用戶名
String Password="password"; //密碼
Class.forName(Driver).newInstance();
Connection con=DriverManager.getConnection(URL,Username,Password);
Informix:
String Driver="com.informix.jdbc.IfxDriver";
String URL="jdbc:Informix-sqli://localhost:1533/db_name:INFORMIXSER=myserver"; //db_name為數據可名
String Username="username"; //用戶名
String Password="password"; //密碼
Class.forName(Driver).newInstance();
Connection con=DriverManager.getConnection(URL,Username,Password);
JDBC-ODBC:
String Driver="sun.jdbc.odbc.JdbcOdbcDriver";
String URL="jdbc:odbc:dbsource"; //dbsource為數據源名
String Username="username"; //用戶名
String Password="password"; //密碼
Class.forName(Driver).newInstance();
Connection con=DriverManager.getConnection(URL,Username,Password);

G. jsp用jdbc連接db2資料庫的方法

資料庫版本:db2
UDB
v7.2
伺服器操作系統:aix4.3.3
1、關閉伺服器上的web服務;
2、停止jdbc偵聽進程db2jd,db2jd一般啟動的是6789的埠服務,
先用ps
-ef
|
grep
db2jd
查看到它的進程號
然後用kill
-9
進程號
命令停止;
3、在資料庫伺服器中,進入/usr/lpp/db2_07_01/java12目錄,執行./usejdbc2以啟用jdbc2;
4、將/usr/lpp/db2_07_01/java12下的db2java.zip拷貝到自己所在web工程的WEB-INFlib下,如果使用的是tomcat,將拷貝後的文件更名為db2java.jar;
5、在伺服器上,su
-
資料庫實例用戶名
執行db2jstrt
6789
(這句啟動了db2jd進程,6789是默認的伺服器偵聽jdbc2連接的埠,也可以設置成另外的任意不沖突的埠。)
6、在自己所建立工程中,建立一個測試的jsp文件,內容如下:
%@
page
contentType=text/html;
charset=gb2312
language=java
import=java.sql.*%
html
body
以下是從db2資料庫讀取的數據:hr
table
border=1
%
Class.forName(COM.ibm.db2.jdbc.net.DB2Driver).newInstance();
Connection
con=java.sql.DriverManager.getConnection(jdbc:db2://192.168.168.2:6789/chaodb,db2inst1,mima);
Statement
stmt=con.createStatement();
ResultSet
rst=stmt.executeQuery(select
username
from
tname);
while(rst.next())
{
out.println(tr);
out.println(td+rst.getString(username)+/td);
out.println(/tr);
}
//關閉連接、釋放資源
rst.close();
stmt.close();
con.close();
%
/table
/body
/html
說明:
192.168.168.2是伺服器的IP地址;
6789是jdbc2偵聽的埠號,需和伺服器端設置一致,如果伺服器本身用的就是6789,那麼程序的這個地方引用時,可省略這個號碼。
chaodb是建立在伺服器上的一個資料庫;
db2inst1是擁有chaodb資料庫的實例用戶;
mima是實例用戶db2inst1的密碼;
先在資料庫中建立一個表,名字是tname,其中有一列是username,錄入一些數據進去。

H. JDBC連接DB2資料庫問題,連接上了但執行查詢出錯!!!

USERS表是建立在那個Schema上的,把Schema的名字也加到SQL語句上,「select * from Schema.USERS」

下面是SQLSTATE=42704的解釋。
SQL0204N "<名稱>" 是一個未定義的名稱。

解釋:

此錯誤由以下之一引起:

o 未在資料庫中定義由 "<名稱>" 標識的對象。

o 在表上未定義由 "<名稱>" 標識的數據分區。

o 正在使用某個數據類型。此錯誤可能是由於下
列原因而發生的:

- 如果 "<名稱>"
是限定名稱,則具有此名稱的數據類型在數據
庫中不存 在。

- 如果 "<名稱>"
是非限定名稱,則用戶的函數路徑不包含期望
的數據類 型所屬於的模式。

- 該數據類型在創建時間戳記早於程序包綁定時
間的資料庫中不存在(適用於靜態語句)。

- 如果數據類型在 CREATE TYPE 語句的 UNDER
子句中,則該類型名可能與正定義的類型相同
,這 是無效的。

o 下列其中一項中正在引用某個函數:

- DROP FUNCTION 語句

- COMMENT ON FUNCTION 語句

- CREATE FUNCTION 語句的 SOURCE 子句

如果 "<名稱>"
是限定名稱,則函數不存在。如果
"<名稱>"
是非限定名稱,則當前函數路徑的任何模式中
都不存 在
此名稱的函數。注意,函數不能以
COALESCE、 NULLIF 或 VALUE
內置函數作為源函數。

o 在 CREATE SECURITY LABEL COMPONENT 語句中 UNDER
子句右邊使用了名為「名稱」的元素,但尚未
將該 元素定義為 ROOT
或者在其他某個元素下方(UNDER)。

o 下列其中一個標量函數指定了「名稱」標識的
安全策略,但在資料庫中未定義該安全策略。

- SECLABEL

- SECLABEL_TO_CHAR

- SECLABEL_BY_NAME

可為任何類型的資料庫對象生成此返回碼。

聯合系統用戶:在資料庫中未定義由 "<名稱>"
標識的對象,或者 "<名稱>" 不是 DROP NICKNAME
語句中的昵稱。

某些數據源不向 "<名稱>"
提供適當的值。在這些情況下,消息標記將具有以下格
式: "OBJECT:<數據源>
TABLE/VIEW",指示指定數據源的實際值未知。

不能處理該語句。

用戶響應:

確保在 SQL 語句中正確指定了對象名(包括任何必需
的限定符),並且它存在。
如果該名稱表示一個數據分區,則查詢目錄表
SYSCAT.DATAPARTITIONS
以找到一個表的所有數據分區。對於 SOURCE
子句中缺少的數據類型或函數,可能是該對象不存
在,或該對象處於某模式中,

I. cognos怎麼用JDBC連DB2數據源

我用的是FineReport,不太了解cognos,在網上當的,不知道能不能解決你的問題。
Cognos 8.4 for linux 64
連接GreenPlum數據使用ODBC驅動 僅僅支持32位驅動程序
使用DataDirect32位驅動連接需要配置IANA值為106(UTF-8)轉碼 以解決中文亂碼問題
另外64位linux下連接GreenPlum資料庫使用ODBC方式的兩種解決方案
1.通過unixODBC---greenplum-connectivity配置
greenplum-connectivity的內部已經自帶了unixODBC
2.通過DataDirect64位驅動同樣需要配置IANA值為106

J. 使用jdbc 連接DB2資料庫 總是在連接池出

認證錯了,看看帳戶密碼及採用的連接方式是否正確。