0
正在尝试将值插入到mysql数据库(在beaglebone黑色上的linux debian)的C项目中工作。代码工作正常时,我插入常量到数据库中,但我不知道如何获取日期/时间和双数(温度)的变量。在它已经一个星期,但似乎无法弄清楚,所以任何洞察力将不胜感激。c将变量插入到mysql数据库beaglebone
我试过的所有东西都会以编译错误结束,在数据库或零中为null。我觉得我很接近......但显然缺少一些东西,可能是在INSERT INTO行?
char buf[LEN];
time_t curtime;
struct tm *loc_time;
curtime = time (NULL);
loc_time = localtime (&curtime);
strftime (buf, LEN, "%Y-%m-%d" " " "%X", loc_time);
fputs (buf, stdout);
MYSQL *con = mysql_init(NULL);
if (con == NULL)
{
fprintf(stderr, "mysql_init() failed\n");
exit(1);
}
if (mysql_real_connect(con, "localhost", "user", "pass", "TempDB", 0, NULL, 0) == NULL)
{
finish_with_error(con);
}
if (mysql_query(con, "CREATE TABLE IF NOT EXISTS TempMeas(MeasTime DATETIME, Temp DOUBLE)"))
{
finish_with_error(con);
}
if (mysql_query(con, "INSERT INTO TempMeas(MeasTime, Temp) VALUES('%d', '%d')", buf, j))
{
finish_with_error(con);
}
mysql_close(con);
exit(0);
已尝试u唱你的3线代码,它编译,但是当我跑它时,它给了一个错误:“分段错误”。我已经尝试了一些其他的东西,但是当我使用常量插入时没有问题。有什么想法吗? – graceyj20 2015-04-02 00:49:50
运行gdb并收到以下内容:程序收到信号SIGSEGV,分段故障。 0xb6b9d010来自/lib/arm-linux-gnueabihf/libc.so.6的_IO_str_overflow()然后做了回溯:#0 0xb6b9d010来自/lib/arm-linux-gnueabihf/libc.so.6的_IO_str_overflow() #1 0xb6b9c252 in /lib/arm-linux-gnueabihf/libc.so.6中的_IO_default_xsputn() #2 0xb6b7b712 in /lib/arm-linux-gnueabihf/libc.so.6中的vfprintf()中vsglef #3 0xb6b952e2(vsprintf )from /lib/arm-linux-gnueabihf/libc.so.6 #4 0xb6b82838 in sprintf()from /lib/arm-linux-gnueabihf/libc.so.6 #5 0x000088e0 in main(argc = 2, argv = 0xbef ... – graceyj20 2015-04-02 02:06:53
对不起,我的错,编辑过的帖子, – 2015-04-02 09:11:29