| 主要类或接口 | 类或接口说明 | 主要函数与函数说明 |
|---|---|---|
| java.sql.DriverManager | 用于管理驱动程序、并可与数据库建立连接。其类中的方法均为静态方法。 | getConnection 创建连接、setLoginTimerout设置登录超时时间、registerDriver注册驱动、deregisterDriver卸载驱动 |
| java.sql.Connection | 数据库连接类,作用是管理执行数据库的连接,可用于提交和回滚事务、创建Statement对象等操作。 | createStatement创建一个 Statement对象、setAutoCommit设置自动提交、close关闭数据库连接、commit提交事务、rollback回滚事务 |
| java.sql.Statement | 用于在连接上运行SQL 语句,并可访问结果。 | execute运行 SQL 语句,executeQuery执行一条返回 ResultSet的 SQL 语句,executeUpdate执行 INSERT、UPDATE、DELETE 或一条没有返回数据集的 SQL 语句,getResultSet用于得到当前 ResultSet的结果 |
| java.sql.ResultSet | 结果集对象,主要用于查询结果访问 | absolute将结果集的记录指针移动到指定行、next将结果集的记录指针定位到下一行、last将结果集的记录指针定位到最后一行、close释放 ResultSet 对象 |
| java.sql.DatabaseMetaData | 用于获取数据库元数据信息的类,如模式信息、表信息、表权限信息、表列信息、存储过程信息等 | getTables 得到指定参数的表信息、getColumns 得到指定表的列信息、getPrimaryKeys得到指定表的主键信息、getTypeInfo 得到当前数据库的数据类型信息、getExportedKeys得到制定表的外键信息 |
| java.sql.ResultSetMetaData | 用于获取结果集元数据信息的类,如结果集的列数、列的名称、列的数据类型、列大小等信息 | getColumnCount得到数据集中的列数、getColumnName 得到数据集中指定的列名、getColumnLabel得到数据集中指定的标签、getColumnType 得到数据集中指定的数据类型 |
[root@ ~]# tar -zvxf jdk-8u202-linux-x64.tar.gz
[root@ ~]# mv jdk1.8.0_202/ /usr/local/java
[dmdba@ ~]$ vi .bash_profile
#需要在dmdba下配置环境变量,按照实际的安装路径填写
export JAVA_HOME=/usr/local/java/jdk1.8.0_202
export JRE_HOME=${JAVA_HOME}/jre:/home/dmdba/dm/dmdbms/drivers/jdbc
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib: /home/dmdba/dm/dmdbms/drivers/jdbc/DmJdbcDriver8.jar
export PATH=${JAVA_HOME}/bin:$PATH
[dmdba@ ~]$ source .bash_profile
[dmdba@ ~]$ java -version
创建目录
[root@ ~]# mkdir /jdbctest
[root@ ~]# chown -R dmdba:dinstall /jdbctest
[root@ jdbctest]# chmod 755 -R /jdbctest/*
配置jdbc连接文件
[dmdba@ ~]$ cd /jdbctest/
[dmdba@ jdbctest]$ vi jdbc_conn.java
package java_jdbctest;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class jdbc_conn {
static Connection conn = null;
static String cname = "dm.jdbc.driver.DmDriver";
static String url = "jdbc:dm://localhost:5236";
static String userid = "SYSDBA";
static String pwd = "Dameng123";
public static void main(String[] args) {
try {
Class.forName(cname);
conn = DriverManager.getConnection(url, userid, pwd);
conn.setAutoCommit(true);
System.out.println("[SUCCESS]conn database");
} catch (Exception e) {
System.out.println("[FAIL]conn database:" + e.getMessage());
}
}
public void disConn(Connection conn) throws SQLException {
if (conn != null) {
conn.close();
}
}
}
编译文件
[dmdba@ jdbctest]$ javac -d . jdbc_conn.java
[dmdba@ jdbctest]$ ls -lrt
-rwxr-xr-x 1 dmdba:dinstall 1015 9月21 16:30 jdbc_conn.java
drwxr-xr-x 2 dmdba:dinstall 29 9月21 16:33 java_jdbctest
运行java_jdbctest
[dmdba@ jdbctest]$ java java_jdbctest.jdbc_conn
[SUCCESS]conn database
进入官网:https://www.unixodbc.org/,选择Download下载软件包。
解压
[root@localhost 桌面]# tar-zxvf unixODBC-2.3.0.tar.gz
安装
[root@localhost 桌面]#cd unixODBC-2.3.0/
[root@localhostunixODBC-2.3.0]#./configure
[root@localhostunixODBC-2.3.0]#make
[root@localhostunixODBC-2.3.0]#make install
[root@localhost etc]#vim /usr/local/etc/odbcinst.ini
[DM ODBC DRIVER]
Description=ODBC DRIVER FOR DM
Driver =/dm/drivers/odbc/libdodbc.so
[root@localhost etc]#vim /usr/local/etc/odbc.ini
[DM] Description =DM ODBC DSN
Driver =DM ODBC DRIVER
SERVER =localhost
UID =SYSDBA
PWD =Dameng123
TCP_PORT =5240
[dmdba@localhost~]$cd /dm/drivers/python/dmPython [dmdba@localhostdmPython]$python3 setup.py install
报错:
错误原因:操作系统目录权限问题,dmdba用户对该目录没有写的权限。
解决方法:
[root@localhost~]#mkdir -p /usr/local/lib64/python3.7/site-packages/ [root@localhost~]#chmod 777 /usr/local/lib64/python3.7/site-packages/
[dmdba@localhost~]$python3
[dmdba@localhost~]$vim dmtest.py
Import dmPython conn=dmPython.connect(user='SYSDBA',password='Dameng123',server='127.0.0.1',port=5240)
cursor=conn.cursor()
cursor.execute('select empno from U_DMSALM.EMP limit 3')
values=cursor.fetchall()
print(values)
cursor.close()
conn.close()
[dmdba@localhost~]$python3 dmtest.py
两台达梦主机修改dm.ini配置文件参数MAL_INI值为1:
[dmdba@~]$ vim /home/dmdba/dmdbms/data/DAMENG/dm.ini
将MAL_INI参数设置为1;
MAL_INI = 1
修改两台达梦主机配置dmmal.ini文件内容
[MAL_INST1]
MAL_INST_NAME =SVR1 # 本地端实例名;
MAL_HOST = 192.168.178.127 # 内网IP;
MAL_PORT = 5536 # MAL系统端口号;
MAL_INST_HOST = 192.168.178.127 # 外网IP(数据库实例IP);
MAL_INST_PORT = 5236 # 数据库端口号;
[MAL_INST2]
MAL_INST_NAME = SVR2 # 远程端实例名;
MAL_HOST = 192.168.178.128 # 内网IP;
MAL_PORT = 5537 # MAL系统端口号;
MAL_INST_HOST = 192.168.178.128 # 外网IP(数据库实例IP);
MAL_INST_PORT = 5236 # 数据库端口号;
[dmdba@ bin]$ ./DmServerSVR1 restart
[dmdba@ bin]$ ./DmServerSVR2 restart
创建私有dblink:
CREATE LINK testdblink CONNECT WITH "SYSDBA" IDENTIFIED BY "Dameng123" USING '192.168.178.128/5236';
创建公有dblink:
CREATE PUBLIC LINK testdblink CONNECT WITH "SYSDBA" IDENTIFIED BY "Dameng123" USING '192.168.178.128/5236';
SELECT OBJECT_NAME,OWNER FROM SYS.DBA_OBJECTS WHERE OBJECT_TYPE='DBLINK';
SELECT * FROM DEPT@TESTDBLINK;
INSERT INTO DEPT@TESTDBLINK VALUES (50,'TECH','BEIJING');
UPDATE DEPT@TESTDBLINK SET DNAME='TEACH' WHERE DEPTNO=50;
DELETE FROM DEPT@TESTDBLINK WHERE DEPTNO=50;
CALL 存储过程名@ TESTDBLINK (参数);
1、数据库连接目前只支持 DM、Oracle 或 ODBC。
2、DM-DM 的同构数据库链接不支持 MPP 环境,DM 与异构数据库的数据库链接支持 MPP 环境。
3、增删改不支持 INTO 语句。
4、不支持使用游标进行增删改操作。
5、不支持操作远程表的复合类型列。
7、DBLINK 理论上不支持 LOB 类型列的操作,但支持简单的增删改语句中使用常量来对 LOB 类型列进行操作。
文章
阅读量
获赞
