我做好了一个form,里面的edit box已经绑定到数据库,我想由用户输入添加一条记录,按add按钮,然后edit box变为空,然后用户输入数据,然后再按add,就把数据加进去,我用了书里的语句
m_pSet->AddNew();
UpdateData(FALSE);
但按了add之后,数据库没变化,我又在后面加了一句m_pSet->Update();
但还是没用,请求正确的语句,已经确认数据库不是只读的问题
m_pSet->AddNew();
UpdateData(FALSE);
但按了add之后,数据库没变化,我又在后面加了一句m_pSet->Update();
但还是没用,请求正确的语句,已经确认数据库不是只读的问题
解决方案 »
- 找到师傅!
- 关于二分法的点小问题
- 有人知道3des算法吗?
- windows 核心编程哪里有下的,如果有e文的,能给个没乱码的吗?
- 急救,请问为什么我在vc中用正弦和反正弦函数,编译提示说不认识这两个函数?
- [FAQ] Modem连接创建后,从COM中读取,总是会首先读到某个字符,为什么?解决问题后加到100分
- AfxMessageBox()能否修改显示文本的字体?
- 请问有没有类似qq的局域网聊天程序,我想把它放在单位的局域网上。
- 恳请高人指教谢谢重谢
- 对一般在校学生而言,做好五点,成为编程高手!
- 拷贝进度对话框如何制作?
- Recordset对象读取SQL数据库时的类型转换问题及AddNew和Delete问题
if(m_pSet->CanUpdate())
m_pSet->Update();
//m_IsAdd=FALSE;
m_pSet->Requery();
UpdateData(FALSE);
if(m_pSet->CanUpdate())
m_pSet->Update();
//m_IsAdd=FALSE;
m_pSet->Requery();
UpdateData(FALSE);不行呵,按add时候,提示说更新或删除的企图失败了。
你是不是有用了“时间”的变量?
如“出生日期”之类的。没有
就会出现错误,可将数据库表的设计中使字段可为空,否则必须得到edit控件中的内容才可以进行添加,如下在你的m_pSet->ADDNEW();
CString str;
后要加入CWnd::GetdlgItemText(IDC_EDIT1,str);//IDC_EDIT1你的edit控件的ID
m_pSet->m_name=str;//m_name是你要添加数据库的某一列字段,在程序的...Set类下可以找到由Class wizard生成的相关内容
//要注意str的类型要和你的m_name类型相符才可以赋值
m_pSet->UPdata();
//例如这里加上
m_pSet->m_nAge = 你的edit box变量
m_pSet->m_strName = 你的edit box变量
......
......
if(m_pSet->CanUpdate())
m_pSet->Update();
//m_IsAdd=FALSE;
m_pSet->Requery();
UpdateData(FALSE);
m_pSet->m_strName = 你的edit box变量
这两句中的m_nAge和m_strName有何不同之处,麻烦了
注意主关键字字段要设置正确。(如果不是采用自动编号之类的话)
如果某个字段你实在是不想马上设值,需要在数据库文件中把那个字段的
必填属性设为false, 允许为NULL设为TRUE ( 如果数据库有该属性)
最后才是Update()
例如你的表绑定为
年龄 m_nAge
姓名 m_strName
..............
................
你的Edit控件变量相对为
m_EditAge
m_EditName
则为:
UpdateData(TRUE);
m_pSet->m_nAge = m_EditAge;
m_pSet->m_strName = m_EditName;
......
可能我讲得不太明白,你可以找一本专门是VC的数据库编程,就只看看MFC ODBC那里就可以了。
m_pset->m_name=m_Name;//控件变量
m_pset->update();
m_pset->requry();