程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> DB2數據庫、事務控制語言、系統控制語言、函數、嵌入式SQL(SQLJ)

DB2數據庫、事務控制語言、系統控制語言、函數、嵌入式SQL(SQLJ)

編輯:DB2教程

 

事務控制語言

  

1.事務提交命令: Commit;

2.事務回退命令: Rollback;

 系統控制語言

1.         取消自動提交:

      Update command options using c off;

2.         連接數據庫:

      Connect to 數據庫名user 用戶using 密碼

3.         斷開數據庫連接:

      Connect reset

        Disconnect 數據庫名

4.         列出數據庫中的所有表:

         List tables for all

5.         列出數據庫中的模式名為schema_name的所有表:

        List tables for schema schema_name

   6.查看表結構

        Describe table 模式名.表名

        Describe select * from 模式名.表名

7.查看表的索引

        Describe indexes for table 模式名.表名

 函數

(一) 列函數

        列函數對列中的一組值進行運算以得到單個結果值。

1.AVG

   返回某一組中的值除以該組中值的個數的和

2.COUNT (*)

   返回非空列值的行數。

3.MAX

   返回一組值中的最大值

4.MIN

   返回一組值中的最小值

5.MOD

求余

(二) 標量函數

    標量函數對值進行某個運算以返回另一個值。下列就是一些由DB2通用數據庫提供的標量函數的示例。

1.ABS

返回數的絕對值

2.HEX

返回值的十六進制表示

3.LENGTH

返回自變量中的字節數(對於圖形字符串則返回雙字節字符數。)

4.YEAR

抽取日期時間值的年份部分

5.NULLIF(a,b)

如果a=b則值為空,否則值為a

6.COALESCE(a,b,c)

:返回第一個具有非空值的參數的值

7.UCASE(str)

小寫字符轉換成大寫字符

8.ICASE(str)

大寫字符轉換成小寫字符

9.LOCAT(str1,str2,n)

返回從第n個字符起,在str1中str2第一次出現的位置

10.SUBSTR(str,m,n)

返回從第m個字符起,,在str中的n個字符串

 嵌入式SQL(SQLJ)

    將SQL語句嵌入應用程序時,必須按以下步驟預編譯應用程序並將其與數據庫聯編:

1.創建源文件,以包含帶嵌入式SQL 語句的程序

      格式: # SQL{ SQL語句} 。

   2.連接數據庫,然後預編譯每個源文件。

      語法: SQLJ 源文件名

例:

import java.sql.*;

import sqlj.runtime.*;

import sqlj.runtime.ref.*;

#sql iterator App_Cursor1 (String empno, String firstnme) ;

#sql iterator App_Cursor2 (String) ;

class App

{

   static

   {

      try

      {

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

      }

      catch (Exception e)

      {

         e.printStackTrace();

       }

   }

   public static void main(String argv[])

   {

      try

      {

         App_Cursor1 cursor1;

         App_Cursor1 cursor2;

         String str1 = null;

         String str2 = null;

         int   count1;

         Connection con = null;

          String url = "jdbc:odbc:tese2";

         DefaultContext ctx = DefaultContext.getDefaultContext();

         if (ctx == null) {

            try {

              if (argv.length == 0) {

                String userid ="tdl";

                String passwd ="user";

                con = DriverManager.getConnection(url, userid, passwd);

                }

              else if (argv.length == 2) {

                 // connect with default id/password

                con = DriverManager.getConnection(url);

               }

              else {

                System.out.println("Usage: java App [username password]");

                System.exit(0);

              }

              con.setAutoCommit(false);

              ctx = new DefaultContext(con);

            }

          catch (SQLException e) {

            System.out.println("Error: could not get a default context");

            System.err.println(e) ;

            System.exit(1);

          }

          DefaultContext.setDefaultContext(ctx);

         }

           #sql cursor1 = { SELECT empno, firstnme from db2admin.employee };

      

         System.out.println("Received results:");

         while (cursor1.next()) {

            str1 = cursor1.empno();

            str2 = cursor1.firstnme();

            System.out.print (" empno= " + str1);

            System.out.print (" firstname= " + str2);

            System.out.print ("");

         }

         cursor1.close();

         #sql cursor2 = { SELECT firstnme from db2admin.employee where empno = :str1 };

        System.out.println("Received results:");

         while (true) {

            #sql { FETCH :cursor2 INTO :str2 };

            if (cursor2.endFetch()) break;

            System.out.print (" empno= " + str1);

            System.out.print (" firstname= " + str2);

            System.out.print ("");

         }

         cursor2.close();

         // rollback the update

         System.out.println("Rollback the update...");

         #sql { ROLLBACK work };

         System.out.println("Rollback done.");

     }

      catch( Exception e )

      {

         e.printStackTrace();

      }

   }

}

注:本程序采用JDBCODBC橋的方式訪問數據庫,必須配置ODBC數據源。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved