採用libpq連結lightdb示例程式
LightDB 是恆生電子股份有限公司研發的一款同時支援線上事務處理與線上分析處理的融合型分散式資料庫產品 , 具備 SQL相容性 高、 容量彈性伸縮 、金融級高可用、現 代硬體融合、純 記憶體 計算 等核心特性 , 主要適用於 對 可用 性 、一致性要求較高 的系統。
由於是基於postgresql開發的,所以客戶端開發完全相容採用libpq庫。示例程式包含了建表,及增,刪,改,查等基本概念功能。
#include <stdio.h> #include <stdlib.h> #include "libpq-fe.h" static void terminate(PGconn *conn) { if (conn != NULL) { fprintf(stderr, "SET failed: %s", PQerrorMessage(conn)); PQfinish(conn); } } static int execute_sql(PGconn *conn, const char *sql) { int status = -1; PGresult *result = PQexec(conn, sql); /** Successful completion of a command returning no data */ if (PQresultStatus(result) == PGRES_COMMAND_OK) { status = 0; } PQclear(result); return status; } static int create_table(PGconn *conn, const char *sql) { return execute_sql(conn, sql); } static int insert_data(PGconn *conn, const char *sql) { return execute_sql(conn, sql); } static int delete_data(PGconn *conn, const char *sql) { return execute_sql(conn, sql); } static int update_data(PGconn *conn, const char *sql) { return execute_sql(conn, sql); } static int select_data(PGconn *conn, const char *sql) { /** Set default status flag to error */ int status = -1; PGresult *result = PQexec(conn, sql); /** The query successfully executed */ if (PQresultStatus(result) == PGRES_TUPLES_OK) { /** Get result column length and row length */ int column_len = PQnfields(result); int row_len = PQntuples(result); int i, j; for (i = 0; i < row_len; ++i) { for (j = 0; j < column_len; ++j) { printf("%-20s", PQgetvalue(result, i, j)); } printf("\n"); } /** Set successful flag */ status = 0; } PQclear(result); return status; } int main(int argc, char **argv) { const char *conn_link = "host=127.0.0.1 port=5432 dbname=yanwf user=yanwf"; const char *create_table_sql = "CREATE SEQUENCE if not exists public.product_sequence start 1 increment 1;\ CREATE TABLE if not exists public.product (\ id SERIAL PRIMARY KEY,\ pname text NULL,\ price numeric NULL,\ ptype varchar(100) NULL\ );"; const char *insert_sql = "insert into public.product values (nextval('public.product_sequence'), 'iphone X', 6800, 'electric');"; const char *select_sql = "select * from public.product order by id"; const char *update_sql = "update public.product set price=6500 where id=1"; const char *delete_sql = "delete from public.product where id >5;"; PGconn *conn; PGresult *result; int status; if (argc > 1) { conn_link = argv[1]; } conn = PQconnectdb(conn_link); if (PQstatus(conn) != CONNECTION_OK) { terminate(conn); exit(1); } /** Set always secure search path */ result = PQexec(conn, "SELECT pg_catalog.set_config('search_path', '', false)"); status = PQresultStatus(result); PQclear(result); if (status != PGRES_TUPLES_OK) { terminate(conn); exit(1); } const char *err_function = ""; do { status = create_table(conn, create_table_sql); if (status != 0) { err_function = "create_table"; break; } status = insert_data(conn, insert_sql); if (status != 0) { err_function = "insert_data"; break; } status = select_data(conn, select_sql); if (status != 0) { err_function = "select_data"; break; } status = update_data(conn, update_sql); if (status != 0) { err_function = "update_data"; break; } status = delete_data(conn, delete_sql); if (status != 0) { err_function = "delete_data"; break; } } while(0); /** Print error info */ if (status != 0) { fprintf(stderr, "%s failed to find, %s\n", err_function, PQerrorMessage(conn)); } else { fprintf(stdout, "The query successfully completed\n"); } /** Release pgsql link */ PQfinish(conn); exit(status); }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70017953/viewspace-2897201/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PostgreSQL連線串URI配置(libpq相容配置)SQL
- 連結串列經典示例
- 【Python】python連結串列應用原始碼示例Python原始碼
- 建立ODBC連結表連SQL原始碼示例SQL原始碼
- 採用java連結timesten記憶體資料庫Java記憶體資料庫
- 微信域名連結防封短連結是如何生成的,微信域名防封短連結程式碼實現示例
- 靜態連結動態連結的連結順序問題和makefile示例
- 微信開發示例(連結資訊的接收)
- 什麼時候該採用結對程式設計?程式設計
- 短網址連結生成器程式碼示例——新浪短連結api介面php、java、Python呼叫演示APIPHPJavaPython
- 採用一門新程式語言,或不採用
- 排名——採用結構體排序結構體排序
- VC++基礎 連結串列的操作示例C++
- 利用爬蟲採集音訊資訊完整程式碼示例爬蟲音訊
- C# 採用OLDB方式連線EXCELC#Excel
- 用程式判斷url連結時候有效
- C++應用程式在Windows下的編譯、連結(四)動態連結C++Windows編譯
- Rust 程式設計,用連結串列實現棧Rust程式設計
- nodejs應用連結NodeJS
- 各種實用連結
- 寒假專案1-動態連結串列體驗(示例)
- sqlserver採用link server方式遠端連線ORACLESQLServerOracle
- 採用手工方式建立IPSec隧道示例
- 支付寶程式碼示例結構說明
- LightDB部署模式模式
- 使用AES 128位加解密,加解密模式採用CBC,填充模式採用PKCS5Padding的Java工具方法示例解密模式paddingJava
- React Native元件佈局應用示例小結React Native元件
- WebBrowser採用MVVM繫結的方式更新內容WebMVVM
- Python 連線 Oracle 示例PythonOracle
- 外連線(outer join)示例
- MySql連線資料庫常用引數及程式碼示例MySql資料庫
- 【技術乾貨】程式碼示例:使用 Apache Spark 連線 TDengineApacheSpark
- Spring-Data-Mongodb資料庫連線程式碼示例SpringMongoDB資料庫線程
- ln命令:軟連結與硬連結的區別與應用
- Netty ServerBootstrap 繫結多個埠(程式碼示例)NettyServerboot
- 把小程式連結起來
- 微信小程式-頁面連結微信小程式
- 部落格連結—程式設計程式設計