MFC 把列表控件listCtrl的各个变量的值写入到mysql数据库中

时间:2022-09-21 18:54:58
if(m_listCtrl.GetItemCount()==0)
{
MessageBox(_T("没有数据要存储!!"));
return;
}
u_int i;
MYSQL *db;
db=mysql_init(0);//初始化数据库
CString str1,str2,str3,str4,str5,str6,str7,str8,sqls;

if(mysql_real_connect(db,"localhost","root","123","test",3306,NULL,0))//连接数据库
{
for(i=1;i<=npkt;i++)
{
str1=m_listCtrl.GetItemText(npkt-i,0);
str2=m_listCtrl.GetItemText(npkt-i,1);
str3=m_listCtrl.GetItemText(npkt-i,2);
str4=m_listCtrl.GetItemText(npkt-i,3);
str5=m_listCtrl.GetItemText(npkt-i,4);
str6=m_listCtrl.GetItemText(npkt-i,5);
str7=m_listCtrl.GetItemText(npkt-i,6);
str8=m_listCtrl.GetItemText(npkt-i,7);

//把列表中的数据插入数据库中
sqls="INSERT INTO sniffer VALUES('%s','%s','%s','%s','%s','%s','%s','%s')",str1,str2,str3,str4,str5,str6,str7,str8;
   
}
MessageBox(_T("存储成功!"));
}
else
{
MessageBox(_T("不能连接到数据库!"));
return;
}
编译通过,但没有在数据库表中添加数据。使用的是VC2010,请问是怎么回事??

13 个解决方案

#1


代码里,你只是准备好了sql语句,但是并没有执行sql语句,当然数据库表中没有数据了。

#2


执行sql语句怎么写啊

#3


if (mysql_query(db,sqls))
{
    return FALSE;
}

return TRUE;

#4


mysql_query(db,sqls) 这句在VC2010里编译不通过,
Error 不存在从CString到const char*的适当转换函数
这是怎么回事?

#5


mysql_query(db,sqls.GetBuffer())

#6


error C2664: “mysql_query”: 不能将参数 2 从“wchar_t *”转换为“const char *”

#7


还在吗?求解答啊

#8


你的工程的字符集是UNICODE的,在工程属性里设置为多字节的就可以了

#9


改为多字节,出现一大串 “warning C4091: “typedef ”: 没有声明变量时忽略” 这种警告

#10


引用 9 楼 sfdoijkf 的回复:
改为多字节,出现一大串 “warning C4091: “typedef ”: 没有声明变量时忽略” 这种警告
警告不用管

#11



sqls.Format("INSERT INTOsnifferVALUES(('%s','%s','%s','%s','%s','%s','%s','%s')",str1,str2,str3,str4,str5,str6,str7,str8);
 mysql_query(db,(char *)(LPCTSTR)sqls);
这样能编译成功,但数据库里还是没有,怎么办?

#12


mysql_query(db,(char *)(LPCTSTR)sqls);
这条语句能成功执行吗?如果不能成功执行,则用
char* errMsg = mysql_error(db);
获取错误信息,看看是什么错误!

#13


if (0 != mysql_library_init(0,NULL,NULL))//初始化数据库
{
return FALSE;
}

if (NULL == mysql_init (db)) // 初始化mysql连接结构体
{
return FALSE;
}

if (0 != mysql_options(db,MYSQL_SET_CHARSET_NAME,"gbk"))//设置字符集,用于处理中文
{
return FALSE;
}

return TRUE;

用如上语句来初始化数据库和连接

#1


代码里,你只是准备好了sql语句,但是并没有执行sql语句,当然数据库表中没有数据了。

#2


执行sql语句怎么写啊

#3


if (mysql_query(db,sqls))
{
    return FALSE;
}

return TRUE;

#4


mysql_query(db,sqls) 这句在VC2010里编译不通过,
Error 不存在从CString到const char*的适当转换函数
这是怎么回事?

#5


mysql_query(db,sqls.GetBuffer())

#6


error C2664: “mysql_query”: 不能将参数 2 从“wchar_t *”转换为“const char *”

#7


还在吗?求解答啊

#8


你的工程的字符集是UNICODE的,在工程属性里设置为多字节的就可以了

#9


改为多字节,出现一大串 “warning C4091: “typedef ”: 没有声明变量时忽略” 这种警告

#10


引用 9 楼 sfdoijkf 的回复:
改为多字节,出现一大串 “warning C4091: “typedef ”: 没有声明变量时忽略” 这种警告
警告不用管

#11



sqls.Format("INSERT INTOsnifferVALUES(('%s','%s','%s','%s','%s','%s','%s','%s')",str1,str2,str3,str4,str5,str6,str7,str8);
 mysql_query(db,(char *)(LPCTSTR)sqls);
这样能编译成功,但数据库里还是没有,怎么办?

#12


mysql_query(db,(char *)(LPCTSTR)sqls);
这条语句能成功执行吗?如果不能成功执行,则用
char* errMsg = mysql_error(db);
获取错误信息,看看是什么错误!

#13


if (0 != mysql_library_init(0,NULL,NULL))//初始化数据库
{
return FALSE;
}

if (NULL == mysql_init (db)) // 初始化mysql连接结构体
{
return FALSE;
}

if (0 != mysql_options(db,MYSQL_SET_CHARSET_NAME,"gbk"))//设置字符集,用于处理中文
{
return FALSE;
}

return TRUE;

用如上语句来初始化数据库和连接