请问如何用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");

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追问

你好 谢谢你的答案 上边的这个程序在运行时会报错,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内部的类型,赋值可以参考上面的代码

参考技术A mysql_num_fields 是求出结果集(即sql语句中的查询)总数
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列。可以这样做吗?那位大侠能够帮我解决一下?

create procedure mymod
@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命令提取文件中的某一列并统计该列中某个数字出现的次数?

怎样隐藏DataTable中的某一列

excel中判断一个表中的某一列的数据在另一个表中的某一列中是不是存在

mysql查询时间最大的某一列

vba中怎么选取二维数组中的某一行或某一列?