讲解&环境准备

需要java环境,因此要装jdk,并且配置环境变量
准备dm8数据库并启动服务
在达梦数据库默认安装目录下,drivers/jdbc下
DmJdbcDriver16.jar
DmJdbcDriver17.jar
DmJdbcDriver18.jar
分别对应java6~8,不同版本使用的jar包不同
这里默认使用java8,即jdk1.8


 【配置jdbc】

如果是windows端,使用的是eclipse
创建一个项目,右键创建好的项目,选择“Build Path”
然后选择“Use as Source Folder”
将drivers/jdbc下的DmJdbcDriver18.jar添加

创建一个类,写入以下代码,修改用户名、密码等连接信息即可

package java_jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class jdbc_conn {
    static Connection con = null;
    static String cname = "dm.jdbc.driver.DmDriver";
    static String url = "jdbc:dm://localhost:5236";
    static String userid = "SYSDBA";
    static String pwd = "SYSDBA";
    public static void main(String[] args) {
        try {
            Class.forName(cname);
            con = DriverManager.getConnection(url, userid, pwd);
            con.setAutoCommit(true);
            System.out.println("[SUCCESS]conn database");
        } catch (Exception e) {
            System.out.println("[FAIL]conn database:" + e.getMessage());
        }
    }
    public void disConn(Connection con) throws SQLException {
        if (con != null) {
            con.close();
        }
    }
}

运行,测试连接是否成功,成功时返回:[SUCCESS]conn database

【开启jdbc日志】 

在jdbc的串联处,增加内容:?logLevel=all&logDir=E:\\dmdbms\\data\\jdbclog
其中,logDir=日志目录,根据情况写。

package java_jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class jdbc_conn {
    static Connection con = null;
    static String cname = "dm.jdbc.driver.DmDriver";
    static String url = "jdbc:dm://localhost:5236?logLevel=all&logDir=E:\\dmdbms\\data\\jdbclog";
    static String userid = "SYSDBA";
    static String pwd = "SYSDBA";
    public static void main(String[] args) {
        try {
            Class.forName(cname);
            con = DriverManager.getConnection(url, userid, pwd);
            con.setAutoCommit(true);
            System.out.println("[SUCCESS]conn database");
        } catch (Exception e) {
            System.out.println("[FAIL]conn database:" + e.getMessage());
        }
    }
    public void disConn(Connection con) throws SQLException {
        if (con != null) {
            con.close();
        }
    }
}

该日志只记录部分连接信息,想要打印更多内容及sql,需要使用log4jdbc-1.2.jar 

【Linux端执行】

在Linux时,若不创建对应的目录(包),那么就写出完整路径即可,同时注释掉代码第一行。

vim jdbc_conn.java


//package java_jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class jdbc_conn {
    static Connection con = null;
    static String cname = "dm.jdbc.driver.DmDriver";
    static String url = "jdbc:dm://localhost:5236";
    static String userid = "SYSDBA";
    static String pwd = "SYSDBA";
    public static void main(String[] args) {
        try {
            Class.forName(cname);
            con = DriverManager.getConnection(url, userid, pwd);
            con.setAutoCommit(true);
            System.out.println("[SUCCESS]conn database");
        } catch (Exception e) {
            System.out.println("[FAIL]conn database:" + e.getMessage());
        }
    }
    public void disConn(Connection con) throws SQLException {
        if (con != null) {
            con.close();
        }
    }
}
javac -cp /dmdbms/drivers/jdbc/DmJdbcDriver18.jar /dmdbms/drivers/jdbc/jdbc_conn.java

java -cp /dmdbms/drivers/jdbc/DmJdbcDriver18.jar:/dmdbms/drivers/jdbc/ jdbc_conn

若是没有javac,则需要安装,我这里使用的是Centos7.4,不用配置yum源就能安装,其他版本的Linux根据情况安装即可。 

yum install java-devel

【测试写数据】

package java_jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class jdbc_insert {
// 定义 DM JDBC 驱动串
static String jdbcString = "dm.jdbc.driver.DmDriver";
// 定义 DM URL 连接串
static String urlString = "jdbc:dm://localhost:5236?logLevel=all&logDir=E:\\dmdbms\\data\\jdbclog";
// 定义连接用户名
static String userName = "SYSDBA";
// 定义连接用户口令
static String password = "SYSDBA";
// 定义连接对象
static Connection conn = null;
// 定义 SQL 语句执行对象
static Statement state = null;
// 定义结果集对象
static ResultSet rs = null;
public static void main(String[] args) {
    try {
        //1.加载 JDBC 驱动程序
        System.out.println("Loading JDBC Driver...");
        Class.forName(jdbcString);
        //2.连接 DM 数据库
        System.out.println("Connecting to DM Server...");
        conn = DriverManager.getConnection(urlString, userName, password);
        //3.通过连接对象创建 java.sql.Statement 对象
        state = conn.createStatement();
//------------------------------------------------------------------------------
        //基础操作:此处对应的操作代码为示例库中 PRODUCTION 模式中的
        //PRODUCT_CATEGORY 表
        //增加
            //定义增加的 SQL 这里由于此表中的结构为主键,自增,只需插入 name 列的值
            String sql_insert = "insert into PRODUCTION.PRODUCT_CATEGORY"+
            "(name)values('厨艺')";
            //执行添加的 SQL 语句
            state.execute(sql_insert);
        //删除
            //定义删除的 SQL 语句
            String sql_delete = "delete from PRODUCTION.PRODUCT_CATEGORY "+
            "where name = '厨艺'";
            //执行删除的 SQL 语句
            state.execute(sql_delete);
        //修改
            String sql_update = "update PRODUCTION.PRODUCT_CATEGORY set "+
            "name = '国学' where name = '文学'";
        //查询表中数据
            //定义查询 SQL
            String sql_selectAll = "select * from PRODUCTION.PRODUCT_CATEGORY";
            //执行查询的 SQL 语句
            rs = state.executeQuery(sql_selectAll);
            displayResultSet(rs);
//----------------------------------------------------------------------------
                state.executeUpdate(sql_update);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                //关闭资源
                rs.close();
                state.close();
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    //显示结果集
    public static void displayResultSet(ResultSet rs) throws SQLException{
        while (rs.next()) {
            int i=1;
            Object id = rs.getObject(i++);
            Object name = rs.getObject(i++);
            System.out.println(id+"  "+name);
        }
    }
}
 

 社区地址:https://eco.dameng.com

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐