| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1016 人关注过本帖
标题:VC中求得平均分及总分,但数据库的平均分和总分为什么没改变
取消只看楼主 加入收藏
comebaby
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-6-17
收藏
 问题点数:0 回复次数:1 
VC中求得平均分及总分,但数据库的平均分和总分为什么没改变

void CSTUDENTDlg::OnBUTTONsum() //求总分及平均分
{
// TODO: Add your control notification handler code here
m_list_student.DeleteAllItems();//m_list_student为列表框对象
CString sq,sql;
sq="Provider=SQLOLEDB.1;Password=121314;Persist Security Info=True;User ID=gogogo;Initial Catalog=student;Data Source=9A729FB3EBB243C\\SQLDB";
CDStrs acFields;
//typedef ::std::vector<CString>CStrs;
//typedef ::std::vector<CStrs>CDStrs;
if(!g_ad.Open(sq))//g_ad为CADODB类对象
{
AfxMessageBox("数据库未打开");
return;
}
sql.Format("SELECT grade,class,id,name, english, math, chinese,"
"english+math+chinese AS summark, (english+math+chinese)/3 AS average FROM student");
g_ad.ExecuteQuery(sql,acFields);//调用ADO封装数据库的一个CADODB类的成员函数
for(int i=0;i<acFields.size();i++)
{
CStrs strs=acFields[i];
Inserstudent(&m_list_student,strs[0],strs[1],strs[2],strs[3],strs[4],strs[5],strs[6],
strs[7],strs[8]);
//在列表框中显示用acFields存处的数据库信息,平均分和总分可以求出来并在列表框显示出
//但在数据库中却没有改变
}
}

//以下部分代码是用ADO封装数据库的一个CADODB类
BOOL CADODB::IsOpen()//判断数据库是否处于打开状态
{
try
{
return (m_pConn!=NULL &&(m_pConn->State & adStateOpen));
//_ConnectionPtr m_pConn; 在CADODB头文件中定义的
}
catch(_com_error e)//异常处理
{
AfxMessageBox(e.ErrorMessage());
}
return FALSE;
}

_RecordsetPtr CADODB::Execute(LPCTSTR strSQL,long lOptions)
{
_variant_t RecordsAffected;
try
{//执行SQL语句
return m_pConn->Execute(_bstr_t(strSQL),&RecordsAffected,adCmdText);
}
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
}
return FALSE;
}

bool CADODB::Open(LPCTSTR lpszConnect,long lOptions)//打开数据库连接
{
m_pConn.CreateInstance("ADODB.Connection");//创建Connection对象
//初始化Recordset指针
m_pRs.CreateInstance(_uuidof(Recordset));
//_RecordsetPtr m_pRs; 在CADODB头文件中定义的
m_strConn=lpszConnect;
if(m_strConn.IsEmpty())
{
return FALSE;
}
if(IsOpen())
Close();
try
{
//连接数据库
return (m_pConn->Open(_bstr_t(m_strConn),"","",lOptions)==S_OK);
}
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
}
return FALSE;
}

void CADODB::Close()//关闭数据库连接
{
try
{
if(m_pConn!=NULL && IsOpen())
m_pConn->Close();
}
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
}
}

void CADODB::ExecuteQueryValue(LPCTSTR lpszSQL,CString& value)//根据SQL语句查询数据库,获取的记录集保存在二维字符串数组中
{
try
{
//打开记录集
m_pRs->Open(_bstr_t(lpszSQL),(IDispatch*)m_pConn,adOpenDynamic,
adLockOptimistic,adCmdText);
if(!m_pRs->adoEOF)
{
_variant_t thevalue=m_pRs->GetCollect(_variant_t((short)0));//获取字段值
value=vartostr(thevalue);
}
m_pRs->Close();
}
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
}
}
void CADODB::ExecuteQuery(LPCTSTR lpszSQL,CDStrs& Fields)//根据SQL语句查询数据库,获取一个字段值
{
try
{
//打开记录集
m_pRs->Open(_bstr_t(lpszSQL),(IDispatch*)m_pConn,adOpenDynamic,
adLockOptimistic,adCmdText);
while(!m_pRs->adoEOF)
{
CStrs strs;
_variant_t thevalue;
//获取一条记录中的所有字段值保存到字符串数组strs中
int size=m_pRs->Fields->Count;
for(long index=0;index<m_pRs->Fields->Count;index++)
{
thevalue=m_pRs->GetCollect(_variant_t(index));
CString temp=vartostr(thevalue);
strs.push_back(temp);
}
Fields.push_back(strs);
m_pRs->MoveNext();
}
m_pRs->Close();
}
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
}
}

以下是在SQL中定义的数据类型
grade int 4
class varchar 50
id varchar 50
name varchar 50
english float 8
math float 8
chinese float 8
summark float 8 (可为空)
average float 8 (可为空)

搜索更多相关主题的帖子: 平均分 数据库 总分 
2007-06-01 01:12
comebaby
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-6-17
收藏
得分:0 

VC中运行结果(列表框的信息):
学期 班级 学号 姓名 英语 数学 语文 总分 平均分
1 520 80 dfghr 10 20 30 60 20
3 501 50112 gfhth 70 80 90 240 80
2 503 50311 fgerheh 70 50 60 180 60

而数据库中的结果不变
1 520 80 dfghr 10 20 30 <NULL> <NULL>
3 501 50112 gfhth 70 80 90 <NULL> <NULL>
2 503 50311 fgerheh 70 50 60 <NULL> <NULL>

数据库连接成功啊,而我在VC执行其他的操作,比如:修改,添加.
数据库它也随着改变,我实在找不出是什么问题

2007-06-01 01:21
快速回复:VC中求得平均分及总分,但数据库的平均分和总分为什么没改变
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037552 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved