VC++环境下 如何实现MySQL数据库表中某一个字段的修改? 只是需要修改表中某个字段的值,并不需要修改全部。在MySQL里面用update命令就可以。比如我要修改表collector中的DtuState字段,让它为1,可以这样:update collector set DtuState=1 where Id=5;如果在VC环境下怎么修改?需要用到什么函数啊 请教专家 谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一样啊,C中通过MYSQL的C API或者C++ 的API也可以执行SQL语句啊。参考手册中这个函数MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html 谢谢不过这个函数是查询数据吧不是我要的修改数据的函数啊 MYSQL的C API或者C++ 的API这又没有谁有中文文档啊 mysql_real_query(&mysql,"update .......", lengthOfSql) 大大 还是不行啊 char *stmt = "update collector set DtuState=2 where Id=5"; int a=mysql_query(temp->m_conn,stmt);调适的时候a的返回值是0,也就是说函数调用成功 但是数据库一点反应都没有。。郁闷 update collector set DtuState=2 where Id=5直接到数据库中去执行,看什么结果,是否有符合条件的记录?另外你是否打开事务? void CDataManageDlg::OnBnClickedBtnQury()//实现查询,并显示在listctrl控件上{ m_listctrl.DeleteAllItems();//m_listctrl是控件关联变量 char *ch_query; temp=g_myDB.m_pConn; ch_query="select * from collector"; mysql_query(temp->m_conn, "set names 'gb2312'"); if(mysql_real_query(temp->m_conn,ch_query,(UINT)strlen(ch_query))!=0) { AfxMessageBox("数据库中表格出错"); } CString str; MYSQL_RES *result; MYSQL_ROW row; if(!(result=mysql_use_result(temp->m_conn))) { AfxMessageBox("读取数据集失败"); } int i=0; while(row=mysql_fetch_row(result)) { str.Format("%s",row[1]); m_listctrl.InsertItem(i,str); str.Format("%s",row[2]); m_listctrl.SetItemText(i,1,str); i++; } mysql_free_result(result); }void CDataManageDlg::OnBnClickedBtnStop(){ char *stmt = "update collector set DtuState=2 where Id=5"; int a=mysql_real_query(temp->m_conn,stmt,(UINT)strlen(stmt));//表中数据并没有变化 if(a!=0) { AfxMessageBox("产生了错误"); }} 数据查询的时候listctrl控件能显示数据 在MySQL直接执行update collector set DtuState=2 where Id=5;能修改成功 在你的代码后头加上:char msg[256];sprintf(msg, "%ld collector updated", (long) mysql_affected_rows(temp->m_conn));AfxMessageBox(msg);看看有多少行产生了修改(当前会话)接着,char* sql_commit = "commit";mysql_real_query(sql_commit, strlen(sql_commit));执行完这些之后,你再看看数据库里边发生变化了没?我估计你的连接初始时,将自动提交关闭了。 谢谢!1 collector updated可以修改了 “我估计你的连接初始时,将自动提交关闭了。”这个能详细说下吗 万分感谢~后面修改的代码是什么意思啊 请教下~ Mediawiki的中文搜索怎么才能使用 mysql连接tomcat问题 求条SQL MySQL中如何执行SQL脚本?如何访问数据库? mysql增加字段导入数据问题 Postgresql在哪里下载 mysql的like查询汉字的时候怎么这么奇怪啊 请教:怎样把ACCESS数据库里的表导入到MYSQL 100分挑战高手:这样的MySQL查询如何写? 一篇关于“MySQL数据库异构数据同步到TAIR”文章中 MySQL-Tair 引擎 Mysql初级认证 vps上mysql安装问题
不过这个函数是查询数据吧不是我要的修改数据的函数啊
MYSQL的C API或者C++ 的API这又没有谁有中文文档啊
char *stmt = "update collector set DtuState=2 where Id=5"; int a=mysql_query(temp->m_conn,stmt);
调适的时候a的返回值是0,也就是说函数调用成功 但是数据库一点反应都没有。。郁闷
另外你是否打开事务?
{
m_listctrl.DeleteAllItems();//m_listctrl是控件关联变量
char *ch_query;
temp=g_myDB.m_pConn; ch_query="select * from collector";
mysql_query(temp->m_conn, "set names 'gb2312'");
if(mysql_real_query(temp->m_conn,ch_query,(UINT)strlen(ch_query))!=0)
{
AfxMessageBox("数据库中表格出错"); }
CString str;
MYSQL_RES *result;
MYSQL_ROW row;
if(!(result=mysql_use_result(temp->m_conn)))
{
AfxMessageBox("读取数据集失败");
}
int i=0;
while(row=mysql_fetch_row(result))
{
str.Format("%s",row[1]);
m_listctrl.InsertItem(i,str);
str.Format("%s",row[2]);
m_listctrl.SetItemText(i,1,str);
i++;
}
mysql_free_result(result);
}
void CDataManageDlg::OnBnClickedBtnStop()
{
char *stmt = "update collector set DtuState=2 where Id=5"; int a=mysql_real_query(temp->m_conn,stmt,(UINT)strlen(stmt));//表中数据并没有变化
if(a!=0)
{
AfxMessageBox("产生了错误");
}}
数据查询的时候listctrl控件能显示数据 在MySQL直接执行update collector set DtuState=2 where Id=5;能修改成功
char msg[256];
sprintf(msg, "%ld collector updated", (long) mysql_affected_rows(temp->m_conn));
AfxMessageBox(msg);
看看有多少行产生了修改(当前会话)
接着,
char* sql_commit = "commit";
mysql_real_query(sql_commit, strlen(sql_commit));执行完这些之后,你再看看数据库里边发生变化了没?我估计你的连接初始时,将自动提交关闭了。
1 collector updated
可以修改了
“我估计你的连接初始时,将自动提交关闭了。”这个能详细说下吗 万分感谢~
后面修改的代码是什么意思啊 请教下~