PHP 操作達夢資料庫測試

來源:互聯網
上載者:User

    在 http://www.dameng.com 下載 DM6.0 開發版 for Windows:
    除不支援資料庫叢集等企業級功能,開發版提供了完整的功能,支援GB級資料量,支援多使用者並發訪問能力,滿足各種中、小型應用的需要。
    開發版免費供開發人員用於學習、測試、開發用途,不允許用於生產、經營等商業用途或其他用途。

    雖然說明裡說 for Windows2000,但在 Windows Server 2003 下,雙擊 setup.exe,順利安裝。

    安裝完成後在 D:/dmdbms/bin 目錄下有 php4_dm.dll 和 php5_dm.dll 2個檔案,分別用於提供達夢資料庫與 PHP4.0 和 PHP5.0 的擴充介面。

    但是,本人的 Apache2.2.8 + PHP5.2.5 環境下,在 php.ini 檔案中配置 php5_dm.dll 擴充後,Apache 無法啟動。只好在 IIS6.0 + PHP4.4.7 下安裝 php4_dm.dll 進行測試。

    在 php.ini 檔案中另需添加 DM 的配置:

    [dm]
    dm.allow_persistent = 1
    dm.max_persistent = -1
    dm.max_links = -1
    dm.default_host = localhost
    dm.default_db = SYSTEM
    dm.default_user = SYSDBA
    dm.default_pw = SYSDBA
    dm.connect_timeout = 10
    dm.defaultlrl = 4096
    dm.defaultbinmode = 1
    dm.check_persistent = ON
    dm.port = 12345

    安裝時選擇了一同安裝測試資料,所以有一個使用者資料庫 BOOKSHOP。在該資料庫裡,建立了一個“模式”MYTEST,再在該模式下建立表 TEABL1。匯出SQL指令碼參考一下表結構:

    CREATE TABLE "TABLE1" AT "BOOKSHOP"
    (
    "NID" INTEGER IDENTITY(1, 1),
    "SNAME" VARCHAR(50),
    "NAGE" SMALLINT DEFAULT 0,
    "BGENDER" BOOLEAN,
    "DDATETIME" TIMESTAMP(0),
    PRIMARY KEY("NID")) STORAGE( INITIAL 1 , NEXT 1 , MINEXTENTS 1 , on "PRIMARY", FILLFACTOR 0 )

    測試代碼與 MYSQL 代碼形式非常相似。功能是插入一條記錄,再選擇全部的記錄,並顯示出來:

    <?php
      $dbhost = 'localhost';
      $dbuser = 'SYSDBA';
      $dbpass = 'ABCDE54321';
      $dbname = 'BOOKSHOP';
      $connect = dm_connect($dbhost, $dbuser, $dbpass);

      if($connect)
      {
        echo '成功串連到達夢資料庫系統';
      }
      else
      {
        echo '串連達夢資料庫系統失敗';
        echo dm_error();
        exit;
      }

      dm_select_db($dbname) or die("select DB error.");

      $sql = "INSERT INTO MYTEST.TABLE1 (SNAME, NAGE, BGENDER) VALUES ('姓名', 80, true)";
      dm_query($sql);

      if (dm_affected_rows()>0)
       echo "Insert OK.";
      else
        echo "Insert failed.";

      $sql = "select * from MYTEST.TABLE1";
      $result = dm_query($sql);

      echo "<br>";
      while($row=dm_fetch_assoc($result))
      {
        echo $row["NID"] . "&nbsp;&nbsp;&nbsp;" . $row["SNAME"] . "&nbsp;&nbsp;&nbsp;" . $row["NAGE"]. "&nbsp;&nbsp;&nbsp;" . $row["BGENDER"] . "<br>";
      }

      /* 釋放資源 */
      dm_free_result($result);

      /* 中斷連線 */
      dm_close($connect);

    在 Windows 下,達夢資料庫管理介面操作還是很順手,比第一次接觸 Oracle 時上手要快。與 MySQL 相比,多了個“模式(SCHEMA)”的概念,但很快瞭解其意義後,把它理解為表的首碼,則完全不影響編碼使用。
達夢資料庫用戶端管理程式的GUI操作介面好像功能還不算強大,有些細節的、貼心的操作不支援,比如不能在2個資料庫之間拖動複製/移動表。

    對於PHP程式員來說,操作達夢資料庫和操作MySQL資料庫非常相似,操作函數差不多是把“mysql”換成了“dm” ,其它基本沒有變動。PHP程式員可以很快上手針對達夢資料庫編程。

    就是不知道通過PHP語言能不能對達夢的事務、鎖、預存程序等進階特性進行操作。希望針對程式員的技術文檔再詳細一些。沒有程式員的支援,資料庫功能再強大也沒人知曉。

    附錄:
    DM 提供的 PHP 擴充函數,簡要說明每個函數的功能:
    dm_connect: 開啟一個到 DM 伺服器的串連
    dm_pconnect: 開啟一個到 DM 伺服器的持久串連
    dm_close: 關閉 DM 串連
    dm_set_connect: 設定串連
    dm_error: 返回上一個 DM 操作產生的文本錯誤資訊
    dm_errno: 返回上一個 DM 操作中的錯誤資訊的數字編碼
    dm_query: 發送一條 DM 查詢
    dm_unbuffered_query: 向 DM 發送一條 SQL 查詢,並不擷取和緩衝結果的行
    dm_more_query_no_result:
    dm_db_query: 發送一條 DM 查詢
    dm_affected_rows: 取得前一次 DM 操作所影響的記錄行數
    dm_create_db: 建立一個 DM 資料庫
    dm_drop_db: 丟棄(刪除)一個 DM 資料庫
    dm_escape_string: 轉義一個字串用於dm_query
    dm_fetch_array: 從結果集中取得一行作為關聯陣列,或數字數組,或二者兼有
    dm_fetch_assoc: 從結果集中取得一行作為關聯陣列
    dm_fetch_field: 從結果集中取得列資訊並作為對象返回
    dm_num_fields: 取得結果集中欄位的數目
    dm_fetch_lengths: 取得結果集中每個輸出的長度
    dm_fetch_object: 從結果集中取得一行作為對象
    dm_fetch_row: 從結果集中取得一行作為枚舉數組
    dm_field_flags: 從結果中取得和指定欄位關聯的標誌
    dm_field_len: 返回指定欄位的長度
    dm_field_name: 取得結果中指定欄位的欄位名
    dm_field_seek: 將結果集中的指標設定為制定的欄位位移量
    dm_field_table: 取得指定欄位所在的表名
    dm_field_type: 取得結果集中指定欄位的類型
    dm_free_result: 釋放結果記憶體
    dm_get_server_info: 取得 DM 伺服器資訊
    dm_list_dbs: 列出 DM 伺服器中所有的資料庫
    dm_list_fields: 列出 DM 結果中的欄位
    dm_list_tables: 列出 DM 資料庫中的表
    dm_num_rows: 取得結果集中行的數目
    dm_ping: Ping 一個伺服器串連,如果沒有串連則重新串連
    dm_result: 取得結果資料
    dm_insert_id: 取得上一步 INSERT 操作產生的 ID
    dm_insert_id_ex: 取得上一步 INSERT 操作產生的 ID
    dm_select_db: 選擇 DM 資料庫
    dm_tablename: 取得表名
    dm_data_seek: 移動內部結果的指標
    dm_db_name: 取得結果資料

    作者:張慶(網眼) 西安 PHP 教育培訓中心 2010-7-10
    來自“網眼視界”:http://blog.why100000.com
    作者微博:http://t.qq.com/zhangking
    “十萬個為什麼”電腦學習網:http://www.why100000.com
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.