JDBC连接支持哪些参数?

~ 0 min
2020-07-09 15:31

JDBC连接字符串不仅包括连接信息,而且还支持数据库的一些关键词设置。在DBMaster中,连接字符串目前支持的关键词有:UID, PWD, SVADR, PTNUM, ATCMT, CTIMO, DIFCO, STRSZ, STROP, DSCMT, ERRLCODE, CLILCODE

LTIMO(5.4.3 #29936, 20200708) 

以下将介绍如何设置JDBC连接字符串,并给出简单的例子来说明这些关键词的用法:

JDBC连接字符串:

URL=" jdbc:dbmaster://127.0.0.1:2453/DBSAMPLE5;uid=sysadm;pwd=abc; atcmt=1; strsz=1000; strop=1; dscmt=1; errlcode=JA; clilcode=Shift-JIS;”

Conn = DriverManager.getConnection (URL);

例如

UID, PWD

Write UID and PWD in URL string and getConnection (url) by url one parameter. Program connects to database successfully by this way.

Test Program:

public class KeyWords {

    static String driver ="dbmaster.sql.JdbcOdbcDriver";

    static String url = "jdbc:dbmaster://127.0.0.1:2453/DBSAMPLE5;uid=sysadm;pwd=;";

    public static void main(String[] args) throws SQLException, ClassNotFoundException {

                     Class.forName (driver);

                     Connection conn = DriverManager.getConnection (url);

                     try{

                                System.out.print ("Connect Successful!");

         }

         catch (Exception e){

               e.getStackTrace ();

         }

    }

}

ATCMT:通过getAutoCommit ()函数,可获知自动提交模式的状态。

测试程序:

public class KeyWords {

    static String driver ="dbmaster.sql.JdbcOdbcDriver";

    static String url = "jdbc:dbmaster://127.0.0.1:2453/DBSAMPLE5;ATCMT = 0;";

    public static void main(String[] args) throws SQLException, ClassNotFoundException {

         Class.forName (driver);

         Connection conn = DriverManager.getConnection (url, "SYSADM", "");

         try{

               Boolean i = conn.getAutoCommit ();

               System.out.print("AUTO-Commit-STAUS:"+i+"\n");

                     }

         catch (Exception e){

               e.getStackTrace ();

         }

    }

}

Step (1): Set ATCMT = 0 in url

Result in Console:

AUTO-Commit-STAUS:false

Step (2): Set ATCMT = 1 in url in above program.

Result in console:

AUTO-Commit-STAUS:true

DSCMT:这个关键词定义了应用程序断开数据库时是否提交事务。

测试程序:

public class KeyWords {

    static String driver ="dbmaster.sql.JdbcOdbcDriver";

    static String url = "jdbc:dbmaster://127.0.0.1:2453/DBSAMPLE5;ATCMT = 0;DSCMT = 0;";

    public static void main(String[] args) throws SQLException, ClassNotFoundException {

         Class.forName(driver);

         Connection conn = DriverManager.getConnection (url, "SYSADM", "");

         try{

               Boolean i = conn.getAutoCommit ();

               System.out.print("AUTO-Commit-STAUS:"+i+"\n");

            Statement stmt = conn.createStatement ();

            int effctCount = stmt.executeUpdate("UPDATE jobs SET JOB_DESC='Snow,Modify,Dbmaster-test' WHERE JOB_ID = 1");

            System.out.println ("The Modified Rows Count is :"+effctCount+"\n");

            ResultSet rs = stmt.executeQuery ("select * from jobs");

            rs.next ();

            String s1= rs.getString (1);

            String s = rs.getString ("JOB_DESC");

            System.out.print ("The Modified\nJOB_ID:"+s1+"JOB_DESC:"+s);

         }

         catch (SQLException e){

               e.getStackTrace ();

         }

    }

Step (1): DB_DSCMT keyword act on auto-commit off status, DBMaster decides to whether execute commit command when a client's application issues a SQLDisconnect.so we should set ATCMT = 0 before test keyword DSCMT.

 URL = "jdbc:dbmaster://127.0.0.1:2453/DBSAMPLE5;ATCMT = 0; DSCMT = 0;”

Step (2): Execute UPDATE statement in AP and Query the result from DBSAMPLE5 to examine the modified result whether affected in database.

Step (3): Query the result from dmSQL and we will find the new data which modified via AP can’t affect in database. This proves DSCMT = 0 is an available setting in URL.

dmSQL> select * from jobs where JOB_ID = 1;

 

  JOB_ID                         JOB_DESC                      MIN_LVL MAX_LVL

=========== ================================================== =======

          1 New Hire - Job not specified                            10      10

Step (4): set DSCMT=1, execute STEP (2) and STEP (3) again. We will find the new data which modified via AP had been affected in database too. This proves DSCMT = 1 is an available setting in URL.

dmSQL> select * from jobs;

  JOB_ID                     JOB_DESC                      MIN_LVL MAX_LVL

=========== ================================================== =======

      1    Snow, Modify, Dbmaster-test                                10      10

ERRLCODE: 用户可以将ERRLCODE设置为en、ja、zh_TW、zh_CN、UTF-8等DBMaster支持的编码。

测试程序:通过函数GETSYSINFO ()可以获取ERRLCODE错误信息字符集。

public class KeyWords {

    static String driver ="dbmaster.sql.JdbcOdbcDriver";

    static String url = "jdbc:dbmaster://127.0.0.1:2453/DBSAMPLE5;ERRLCODE =zh_CN;";

    public static void main(String[] args) throws SQLException, ClassNotFoundException {

         Class.forName (driver);

         Connection conn = DriverManager.getConnection (url, "SYSADM", "");

         try {

               Statement stmt = conn.createStatement ();

           ResultSet rs = stmt.executeQuery ("SELECT GETSYSINFO ('errlcode')");

               rs.next ();

               String s = rs.getString (1);

               System.out.print ("ERRLCODE:"+s);

Step (1): set ERRLCODE =zh_CN in url.

Restlt in console:

ERRLCODE:zh_CN 

Step (2): set ERRLCODE =en in URL.

Restlt in console:

ERRLCODE:en

CLILCODE此关键词指定客户端的数据库字符集编码。当使用多语言数据库并且数据库服务器端的LCODE设置为UTF-8时,客户端可以使用任意本地编码连接该UTF-8数据库服务器,DBMaster支持的编码有BIG5、 EUC-JP、UTF-8等。但是,如果服务器端LCODE没有设置为UTF-8,客户端的CLILCODE值必须与服务器端LCODE编码相同。

测试程序:使用上面测试关键词ERRLCODE的测试程序,只需在该程序上做以下更改:

用“ResultSet rs = stmt.executeQuery ("SELECT GETSYSINFO ('clilcode')")代替测试程序的“ResultSet rs = stmt.executeQuery ("SELECT GETSYSINFO ('errlcode')"

CLICODE = EUC-JP OR CLILCODE=GBK代替ERRLCODE (ERRLCODE=zh_CN)的URL。

Step (1) set CLILCODE = EUC-JP in url, url = "jdbc:dbmaster://127.0.0.1:2453/DBSAMPLE5;CLILCODE =EUC-JP;";

Result in console:

CLILCODE: EUC-JP

Step (2) set CLILCODE = GBK, url = "jdbc:dbmaster://127.0.0.1:2453/DBSAMPLE5;CLILCODE =GBK;";

Result in console:

CLILCODE: GBK

STROP此关键词定义在进行字符串连接操作时是否删除字符串尾部空格。值为0,表示在执行字符串连接操作前保留CHAR类型数据尾部的空格;值为1,表示在执行字符串连接前删除其尾部空格。

测试程序:使用以上测试关键词ERRLCODE的测试程序,只需在该程序上做以下更改:

使用“ResultSet rs = stmt.executeQuery ("SELECT CONCAT ('aaa','bbbb')")代替测试程序的“ResultSet rs = stmt.executeQuery ("SELECT GETSYSINFO ('errlcode')");”。

使用 STROP = 0 or STROP = 1代替ERRLCODE (ERRLCODE=zh_CN)的URL。

Step (1): set STROP=0 in URL: url = "jdbc:dbmaster://127.0.0.1:2453/DBSAMPLE5;STROP=0";

Result in Console:

aaa bbbb

Step (2): set STROP=1 in URL: url = "jdbc:dbmaster://127.0.0.1:2453/DBSAMPLE5;STROP=1";

Result in console:

Aaabbbb

平均分: 0 (0 投票)

你不能对该内容发表评论

标签