请问如何用C或C++把mysql数据库中的某一列数据读出来,然后把这一列数据存放在数组中?急用!!!谢谢!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问如何用C或C++把mysql数据库中的某一列数据读出来,然后把这一列数据存放在数组中?急用!!!谢谢!相关的知识,希望对你有一定的参考价值。
现在有一个例子,但是没太看懂,尤其是其中的result是什么类型的变量???
mysql_ROW row;
unsigned int num_fields;
unsigned int i;
num_fields = mysql_num_fields(result);
while ((row = mysql_fetch_row(result)))
unsigned long *lengths;
lengths = mysql_fetch_lengths(result);
for(i = 0; i < num_fields; i++)
printf("[%.*s] ", (int) lengths[i],
row[i] ? row[i] : "NULL");
printf("\n");
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追问
你好 谢谢你的答案 上边的这个程序在运行时会报错,result未定义 请问result 应该如何定义及赋值呢,求详细代码!谢谢!
追答MYSQL _connect;
MYSQL_RES *res;
MYSQL_ROW row;
mysql_init (&_connect);
if (!mysql_real_connect (&_connect, --ip--, --username--, --passwd--, --database--, 0, NULL, 0))
cout v_sql;
while ((row = mysql_fetch_row(res)))
int i = 0;
while (i < numcols)
cout << (row[i]!=NULL?row[i]:"IsNull") << "==";
v_sql.push_back(row[i] != NULL ? row[i]: "IsNull");
i++;
for (int i = 0; i < v_sql.size(); ++i)
cout << "*** " << v_sql[i] << endl;
上面是我以前的一段代码, 用 -- -- 的部分 例如 --ip-- 是根据你的环境要配置的
里面res就是你上面的result 也是mysql内部的类型,赋值可以参考上面的代码
mysql_fetch_row 是获得结果集中具体的值
mysql_fetch_lengths 是得到结果集中每一列的长度
sql server 2005数据库中表B以表A为外键,那么表B中的某一列的默认值能用表A的某一列吗?
我的表格结构是这样的:
--创建宿舍楼房表
create table House
(
HouseId int identity(1,1) primary key not null,
HouseNO varchar(10) not null, --栋号
HouseRoom varchar(10) not null, --房号
HouseMan int not null, --能容人数
HouseSex varchar(10) not null, --性别
HouseTel int not null --电话
)
--创建宿舍房间表
create table Room
(
RoomId int identity(1,1) primary key not null,
RoomIn int default(0) not null, --居住人数
RoomNull int default(不知道怎么写) not null, --空缺人数
RoomWater float not null, --水表底数
RoomWire float not null, --电表底数
RoomCost float not null, --宿舍费用
HouseId int foreign key references House(HouseId) not null
)
现在我想用 表Room中的RoomNull列 的默认值为 表House中的HouseMan列。可以这样做吗?那位大侠能够帮我解决一下?
@status varchar(20),
@EffectiveDate datetime,
@PercentCompletion float
AS
BEGIN
declare @id integer,@st varchar(20);
select top 1 @id=ProjectCompletionID,@st=status from Projects
order by ProjectCompletionID desc;
update Projects
set Status=@status
where ProjectCompletionID=@id;
insert int Projects select @id+1,@EffectiveDate,@PercentCompletion,@st;
commit;
END
---如果ProjectCompletionID是自增长,则不需要列入到增加列,
所有字段类型根据实际确定修改
参考技术A RoomNull 不是外键 参考技术B 创建视图不就可以了 参考技术C 这个问题,不应该在数据库层面解决,应该是在你的业务逻辑里面解决。
当你Create一个Room时,应该会有以下步骤
1、选择一个Room所在的House
2、读取所选House的HouseID、HouseMan
3、将HouseMan和HouseID赋值到你要创建的Room实体,
4、添加Room实体的其他属性,比如 RoomCost
5、将Room实体持久化保存到数据库。
其中第2和3步,就能解决你的问题了。
以上是关于请问如何用C或C++把mysql数据库中的某一列数据读出来,然后把这一列数据存放在数组中?急用!!!谢谢!的主要内容,如果未能解决你的问题,请参考以下文章
如何用批处理命令把1个文件夹里多个csv文件的某一列合并成一个txt
如何用awk命令提取文件中的某一列并统计该列中某个数字出现的次数?