连接字符串以构成C中的SQL查询

时间:2015-08-05 19:24:09

标签: sql c casting

我需要在两个单独的步骤中执行此操作,但到目前为止,我找不到这样做的方法。

首先,我需要将一个double变量转换为char变量(并保存在该变量中)。我注意到类型转换在C和Java /其他语言中的工作方式不同。如何将变量转换为字符串/ char?

其次,我需要连接字符串,总共有6个字符串变量需要连接,我只找到ICarBlueprint goodcarBlueprint = // Assigned somewhere else ICar x = goodcarBlueprint.getFactory().build(goodcarBluePrint); 函数只需要2个参数。

这些是我想要构建的字符串:

strcat

然后我需要连接的字符串才能在char *queryOne = "INSERT INTO location (id, carid, ownerid, lat, long, speed) VALUES (,2, 1, "; char *queryTwo = lat; // lat is a double char *queryThree = ","; char *queryFour = longatude; // longatude is a double char *queryFive = ","; char *querySix = speed; // speed is a double 中作为一个长字符串

工作

编辑:可能,这应该转换我认为的数据类型?

(mysql_query(conn, query))

1 个答案:

答案 0 :(得分:1)

在您的情况下,您可以使用:

#define MAXSQL 256
char sql[MAXSQL];
snprintf(sql, MAXSQL,  "%s %f , %f , %f", queryOne, lat, longatude, speed);

snprintf函数写入缓冲区,这是它的第一个参数。 http://www.cplusplus.com/reference/cstdio/snprintf/?kw=snprintf

现在,您可以随意使用sql字符串。

请注意,我使用的是snprintf而不是sprintf。这是为了避免潜在的缓冲区溢出。

此外,不要反复使用strcat,因为这会导致Shlemiel成为Painter算法,并且每次调用strcat都会变慢,因为strcat必须从头开始并找到null终止符。有关详细信息,请参阅http://www.joelonsoftware.com/articles/fog0000000319.html