
exec sql include sqlca
int main(){
exec sql begin declare section
char userpasswd[30]="openlab/123456"
struct{
int id
char name[30]
double salary
}emp
exec sql end declare section
exec sql connect:userpasswd
exec sql declare empcursor cursor for
select id,first_name,salary from
s_emp order by salary
exec sql open empcursor
exec sql whenever notfound do break
for(){
exec sql fetch empcursor into :emp
printf("%d:%s:%lf\n",emp.id,emp.name,
emp.salary)
}
exec sql close empcursor
exec sql commit work release
}
把数据存到结构体里。
int CountLines(char *filename) { ifstream ReadFileint n=0char line[512]ReadFile.open(filename,ios::in)//ios::in 表示以只读的方式读取文件 if(ReadFile.fail())//文件打开失败:返回0 { return 0} else//文件存在 { while(!ReadFile.eof()) { ReadFile.getline(line,512,'\n')n++} return n}MYSQL_ROW row 是mysql内部的类型,可能是一个结构体A,mysql先执行以下desc table的 *** 作,依照表结构创建字段,也可能只是得到一行数据有几列,分别是什么类型。row = mysql_fetch_row(result)会取一样的数据,mysql里面每成功调用一次这个函数mysql_fetch_row就会取一行,类似
vector<struct A>v_a
··········赋值v_a·········
全局定义 int x = 0
function: mysql_fetch_row
while (x <v_a.size())
row = v_a[x++]
mysql_fetch_lengths是得到一个row里面有多少数据,也就是table里的字段数
后面取的过程就很简单了,某个字段row[i] 为空的时候,不做row[i] ? row[i] : "NULL" 取到的会是个'\0',这个对于程序处理是比较危险的,为空的时候就附值一个标识是比较常用的做法。
fyi
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)