成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用SQLite擴展函數來定義自己的函數

數據庫 其他數據庫
sqlite有個不方便的地方就是不能在sql中定義枚舉量和常量。但我們可以這樣解決:因為sqlite可以讓用戶自己擴展sql函數,所以我們可以根據自己的需要寫出適合自己程序的函數。本文主要介紹了這一過程,希望能對您有所幫助。

使用C/C++操作sqlite數據庫進行GIS數據轉換時,sqlite不能在sql中定義枚舉量和常量。當程序設計中需要很多枚舉量的時候,比如道路表中道路類型列就是枚舉量:0表示高速,1表示國道,2表示省道,3表示縣道等,又不能在sql中定義這些枚舉量,我們該怎么解決呢?

通過搜索引擎知道sqlite可以讓用戶自己擴展sql函數,感覺可以使用sqlite擴展函數來解決這個問題。sqlite擴展sql函數的方法和步驟:首先按sqlite擴展函數的原型定義自己的函數,然后使用sqlite3_create_function注冊到sqlite中,然后就可以在sql中使用自己定義的函數了,就跟使用預定義好的sqlite核心函數一樣。

例如,我們可以把高速類型定義成一個擴展函數,這個函數返回0:

  1. static void fun_ROAD_TYPE_HIGHWAY( sqlite3_context * context, int argc, sqlite3_value ** value ) { sqlite3_result_int64( context, 0 ); }; 

然后把它注冊到sqlite中,注冊名為ROAD_TYPE_HIGHWAY:

  1. sqlite3_create_function( db, "ROAD_TYPE_HIGHWAY", 0, SQLITE_ANY, 0, fun_ROAD_TYPE_HIGHWAY, 0, 0 ) 

注冊完后我們就可以在sql語句中通過注冊名ROAD_TYPE_HIGHWAY來使用這個函數了,如:選出所有高速的sql可以寫成select * from road_table where road_type = ROAD_TYPE_HIGHWAY(),這樣是不是好多了。

由于GIS數據庫中的枚舉量居多,如果每個都要手工寫個函數并注冊,這肯定是一個超級體力活,所以用perl寫了一個根據c/c++頭文件生成sqlite擴展函數的小程序:http://files.cnblogs.com/adgnat/sqlitefungen.7z

程序使用方法:

1.確保安裝了perl5和vc。

2.下載程序并解壓。

3.打開cmd.exe,并進入程序(sqlitefungen)目錄。

4.運行vcvars32.bat初始化VC編譯環境。

使用SQLite擴展函數來定義自己的函數

5.執行自動生成腳本:perl sqlitefungen.perl mydb.h,mydb.h可以換成自己定義的頭文件。

使用SQLite擴展函數來定義自己的函數

6.執行完后頭文件目錄下將生成一個同名的dll文件,你可以在sqlite3.exe中使用.load命令或sql中使用load_extension函數來加載該dll,加載后就可以使用dll中定義的擴展函數了。

關于SQLite擴展函數的知識就介紹到這里,希望看完之后您能有所收獲,因為您的收獲就是我***的快樂!

【編輯推薦】

  1. SQLite 基本控制臺命令簡介
  2. SQLite數據庫簡介之對表的操作
  3. 利用Sql Server將Excel中的數據導入Oracle
  4. 利用mysql的audit審計功能記錄用戶操作信息
  5. 忘記sa密碼,又刪除了administrators帳號的解決方法
責任編輯:趙鵬 來源: 博客園
相關推薦

2010-10-25 16:05:07

oracle自定義函數

2009-09-14 09:49:08

Linq擴展函數

2010-03-26 18:21:29

PythonC API

2010-02-02 17:33:35

Python函數編譯

2017-03-16 14:37:05

LinuxShell函數

2009-12-07 17:33:44

PHP SQlite數

2010-05-24 15:53:44

MySQL內置函數

2010-09-09 09:31:19

SQL函數left

2023-09-12 07:38:36

C++getline函數

2011-04-18 10:49:49

SQL Server擴展函數

2021-07-15 16:41:21

Swift查詢函數

2010-01-05 16:07:46

jQuery.prot

2010-10-25 17:08:34

oracle聚合函數

2010-09-24 19:28:12

SQL CHARIND

2010-10-09 16:18:43

MYSQL IFNUL

2010-10-11 15:08:44

MySQL conca

2010-10-11 16:23:35

MYSQL BENCH

2009-07-21 17:21:57

Scala定義函數

2010-07-09 10:08:53

SQL Server函

2010-11-11 16:17:07

SQL內嵌用戶定義函數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美4p| 操视频网站| 成人av网站在线观看 | 亚洲成人在线视频播放 | 在线国产视频 | 欧美一区二区在线看 | 91私密视频| 一级片视频免费观看 | 久久久久久久电影 | 91亚洲精品国偷拍自产在线观看 | 久久久久久免费毛片精品 | 天天看天天干 | 国产精品久久久久久久久免费相片 | 亚洲欧洲精品在线 | 久久综合成人精品亚洲另类欧美 | 国产一区 日韩 | 免费国产精品久久久久久 | 精品福利一区二区三区 | 午夜精品久久久久久久星辰影院 | 日韩一区二区在线视频 | jizz视频 | 中文字幕在线观看成人 | 视频一区二区中文字幕日韩 | 久久综合久| 久久久久久久一区二区三区 | 91成人免费电影 | 国产精品一二区 | 国产日韩欧美综合 | 国产一区二区三区视频在线观看 | 国产精品成人一区二区三区 | 成人日b视频 | 成人在线精品视频 | 精品国产欧美一区二区三区成人 | 国产午夜精品一区二区三区四区 | 国产精品久久久久久久久久久久久久 | 精品欧美乱码久久久久久1区2区 | 精品欧美一区二区三区久久久 | 成人一区二区在线 | 一级毛片免费 | 成人在线观看欧美 | 欧美精品二区三区 |