㈠ 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: