这是用VS2019 MFC写的一个MySQL数据库程序,C++语言写的
在这个函数中,实现教师开设课程操作,代码如下,但是无论开设什么都是失败,请问该如何改?
代码:
void TCHON::OnBnClickedButtonKaishe()
{
// TODO: 在此添加控件通知处理程序代码
USES_CONVERSION;
kehao.GetWindowTextW(strkehao);
keming.GetWindowTextW(strkeming);
xuefen.GetWindowTextW(strxuefen);
//if(!strkehao)MessageBox(TEXT("开设课程失败!"));
double flxuefen = atof(T2A(strxuefen.GetBuffer(0)));
CString query;
query.Format(_T("开设课程('%s','%s',%f,'%s');"), strkehao,strkeming,flxuefen,strnum);
char* charquery = T2A(query.GetBuffer(0));
query.ReleaseBuffer();
if (mysql_query(&m_sqlCon, charquery))//如果函数执行成功则返回0,不成功就进入if语句
{
CString error;
error = mysql_sqlstate(&m_sqlCon);
if (error == "09000")
{
CString errormsg;
errormsg = mysql_error(&m_sqlCon);
MessageBox(errormsg);
}
else
MessageBox(TEXT("开设课程失败!"));
return;
}
query.Format(_T("select * from 课程 where 课号 in (select 课号 from 教授 natural join 教师 where 教师编号=%s);"), strnum);
charquery = T2A(query.GetBuffer(0));
query.ReleaseBuffer();
mysql_query(&m_sqlCon, charquery);
MYSQL_RES* m_res = mysql_store_result(&m_sqlCon);
if (mysql_num_rows(m_res) != 0)
{
UpdateList(m_res);
}
else MessageBox(L"未开设课程!");
}
失败截图:
表的结构: