當前位置:首頁 » 編程語言 » 嵌入式sql編程c
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

嵌入式sql編程c

發布時間: 2022-08-02 00:53:50

c語言db2嵌入式sql編程,編譯問題 undefined reference to `sqlastrt'

1、要有類似的定義:
……
EXEC SQL INCLUDE SQLDA; /* or #include <sqlda.h> */
2、編譯環境要有db2的許可權和sqllib的路徑
3、我已經上傳了一份相關的文檔,預計明後天審核通過就可以看到了
《DB2開發基礎》
http://passport..com/?business&aid=6&un=chinacmouse#7

補充一個程序:
#include <time.h>
#include "stdio.h"

EXEC SQL INCLUDE SQLCA;

int main()
{
int i=0;
struct tm *pt;
time_t t1;
t1 = time(NULL);
pt = localtime(&t1);
printf("%4d%02d%02d", pt->tm_year+1900, pt->tm_mon+1, pt->tm_mday);
printf("%02d:%02d:%02d\n",pt->tm_hour,pt->tm_min,pt->tm_sec);

EXEC SQL CONNECT TO db;
i=0;
while (i<3000)
{
int j=0;
while (j<1000)
{
EXEC SQL update cc.fund set cc_code='095' where cc_no='0950031359';
j++;
}
i++;
}
EXEC SQL COMMIT;
t1 = time(NULL);
pt = localtime(&t1);
printf("%4d%02d%02d", pt->tm_year+1900, pt->tm_mon+1, pt->tm_mday);
printf("%02d:%02d:%02d\n",pt->tm_hour,pt->tm_min,pt->tm_sec);
EXEC SQL CONNECT RESET;
return 1;
}

編譯腳本
db2 prep testdb.sqc target cplusplus bindfile using testdb.bnd package using testdb
db2 bind testdb.bnd
db2 grant execute on package testdb to public
gcc -I/app/db2inst1/sqllib/include -I./ -c -g testdb.C
gcc -L/app/db2inst1/sqllib/lib -ldb2 -L/usr/lib -lm -o testdb testdb.o

㈡ 嵌入式SQL怎麼實現

C++ 本來就不識別SQL,要在C++里對SQL類的資料庫進行操作的正確做法的原理是:
1、使用控制項,向SQL類伺服器(比如MS SQL Server或Oracle,或最簡單的ACCESS資料庫)發送SQL語句,SQL類伺服器響應後就會針對語句的要求進行返回數據集或結果,控制項可以收到結果,然後進行展現或處理。
2、一般最常見的是ADO Data類的控制項,比如C++Builder里的ADOQUERY,ADODataset。又比如VC里的ADO Data控制項,等等。
3、想具體的學習如何進行SQL資料庫編程,可自個網路關鍵詞:「SQL資料庫編程」,或「C++Builder SQL資料庫編程 」。

㈢ sql嵌入式和授權有什麼區別

不必逐個地為每個用戶授予或撤銷特權。
組提供了一種便利的方法為一組用戶執行授權,而不必逐個地為每個用戶授予或撤銷特權。通常,動態SQL語句考慮組成員資格,但靜態SQL語句並非如此。
嵌入式SQL是一種將SQL語句直接寫入C語言,COBOL,FORTRAN,Ada等編程語言的源代碼中的方法。在嵌入式SQL中,為了能夠區分SQL語句與主語言語句,所以SQL語句都必須加前綴EXECSQL。SQL語句的結束標准則隨主語言的不同而不同。

㈣ 嵌入式sql語句怎麼才能在C語言運行,比如這個C程序,需要什麼頭文件之類的嗎

這種程序需要先使用資料庫編程軟體的編譯器編譯生成.c文件後,才可以再使用C編譯器對.c文件進行編譯。比如Oracle的ProC和informix的ESQL/C。

建議查看一下ProC和ESQL/C方面的資料。

㈤ linux gcc mysql 如何在C語言中使用嵌入式SQL編程 要什麼頭文件如何編譯越詳細越好

最起碼包含mysql.h
實例代碼:
#include <stdlib.h>
#include <stdio.h>

#include "mysql.h"

int main(int argc, char *argv[]) {
MYSQL *conn_ptr;

conn_ptr = mysql_init(NULL);
if (!conn_ptr) {
fprintf(stderr, "mysql_init failed\n");
return EXIT_FAILURE;
}

conn_ptr = mysql_real_connect(conn_ptr, "localhost", "rick", "secret",
"foo", 0, NULL, 0);//連接資料庫

if (conn_ptr) {
printf("Connection success\n");
} else {
printf("Connection failed\n");
}

mysql_close(conn_ptr);

return EXIT_SUCCESS;
}
編譯:(假定上面文件取名 con.c,在當前目錄下)
gcc -I/usr/include/mysql con.c -L/usr/lib/mysql -lmysqlclient -o con

㈥ 如何用C實現對SQL資料庫的操作

連接到SAMPLE資料庫,查詢LASTNAME為JOHNSON的FIRSTNAME信息。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "util.h"
#include <sqlca.h>``
EXEC SQL INCLUDE SQLCA;

main()
{
EXEC SQL BEGIN DECLARE SECTION;

char firstname[13];
char userid[9];
char passwd[19];
EXEC SQL END DECLARE SECTION;
EXEC SQL CONNECT TO sample;

EXEC SQL SELECT FIRSTNME INTO :firstname

FROM employee
WHERE LASTNAME = 'JOHNSON';
printf( "First name = %s\n", firstname );
EXEC SQL CONNECT RESET;
return 0;
}
上面是一個簡單的靜態嵌入SQL語句的應用程序。它包括了嵌入SQL的主要部分:
(1)中的include SQLCA語句定義並描述了SQLCA的結構。SQLCA用於應用程序和資料庫之間的通訊,其中的SQLCODE返回SQL語句執行後的結果狀態。
(2)在BEGIN DECLARE SECTION和END DECLARE SECTION之間定義了宿主變數。宿主變數可被SQL語句引用,也可以被C語言語句引用。它用於將程序中的數據通過SQL語句傳給資料庫管理器,或從資料庫管理器接收查詢的結果。在SQL語句中,主變數前均有「:」標志以示區別。
(3)在每次訪問資料庫之前必須做CONNECT操作,以連接到某一個資料庫上。這時,應該保證資料庫實例已經啟動。
(4)是一條選擇語句。它將表employee中的LASTNAME為「JOHNSON」的行數據的FIRSTNAME查出,並將它放在firstname變數中。該語句返回一個結果。可以通過游標返回多個結果。當然,也可以包含update、insert和delete語句。
(5)最後斷開資料庫的連接。
從上例看出,每條嵌入式SQL語句都用EXEC SQL開始,表明它是一條SQL語句。這也是告訴預編譯器在EXEC SQL和「;」之間是嵌入SQL語句。如果一條嵌入式SQL語句佔用多行,在C程序中可以用續行符「\」。

㈦ db2 嵌入式sql編程的問題(c語言)

兩個異常應該沒有關系啊,上一個是說指針類型不同,一個是struct sqlda的指針,一個是struct sqlda的二維指針。你看看2152的源碼是什麼 。

後面就是說找不到not_found的label,應該是個goto語句,你看看函數下面有沒有
not_found: