大四中软实习笔记20130307

1 Winsock函数的注意点

1.1 函数的返回值
accept
recv:真正收到的字节数
        buf_recv---数据缓存
                   协议缓存

send:真正发出去的字节数
        buf_send---数据缓存
                   协议缓存

connect


1.2 利用/r/n
编辑框的属性要改:
多行
支持return

 

2 ODBC数据库访问技术
2.1 数据库的建立
通过Access2003建立1个数据库-----db_student.mdb
   包含了1个表-----table_student

2.2 建立ODBC的数据源
控制面板-----管理工具-----数据源ODBC
意义:让db_student.mdb------dsn_student 一一对应,以后程序中就只需要访问dsn_student

2.3 VC建立基于对话框的工程
步骤:
1 在stdafx.h中增加
#include <afxdb.h>---------为了声明准备使用的ODBC类的原型

2 在类视图上利用右键-------建立1个set派生类(基类是CRedordSet)
注意:用到了dsn/table,选动态记录集

 

3 修改界面,增加4个编辑框,用于显示 number  name  age  math

4 关联成员变量

5 给上面的关联变量 赋值
问题:需要记录集对象的地址,才能赋值
步骤:
1 在dlg类下增加成员变量 ------记录集对象的地址
COdbc1Set * m_pSet;

2 在dlg类下增加成员变量 ------数据库对象(不是地址)
CDatabase m_db;

3 在OnInitDialog函数中,增加代码
    m_pSet=new COdbc1Set(&m_db);
    m_pSet->Open(CRecordset::dynaset,"select * from table_student");
    m_edit_number=m_pSet->m_number;
    m_edit_name=m_pSet->m_name;
    m_edit_age=m_pSet->m_age;
    m_edit_math=m_pSet->m_math;
    UpdateData(FALSE);
第1条记录就可以显示在界面上了   
   

 

6 ODBC的概念
6.1 ODBC
程序员-------ODBC的成员函数--------数据库(各种)

6.2 我们学,通过MFC下的2个ODBC相关类,来操作ODBC
CDdatabase
它和我们建立的dsn相关

CRecordSet
它和当前记录相关
记录集在内存里----------数据库在磁盘上
记录集-----是某个table的复制品,而且在内存里    table_student
  使用select * from table_student的SQL语句查询出来的结果,放在内存里
 
 
6.3 游标-------记录集的游标
刚打开记录集时,在第1条
如果删除记录(当前),游标都不会动--------假删(只是做了删除标记)------真删(Requery,而且游标自动到第1个)
插入记录后,游标仍然不动。实际上是追加。

代码:
void COdbc1Dlg::OnButtonNext()
{
    // TODO: Add your control notification handler code here
    m_pSet->MoveNext();
    if(m_pSet->IsEOF())        //判断游标是否到数据库外面了。IsEOF为数据库后面,IsBOF为数据库前面
    {
        m_pSet->MoveFirst();
    }
    m_edit_number=m_pSet->m_number;
    m_edit_name=m_pSet->m_name;
    m_edit_age=m_pSet->m_age;
    m_edit_math=m_pSet->m_math;
    UpdateData(FALSE);
}

void COdbc1Dlg::OnButtonAppend()
{
    // TODO: Add your control notification handler code here
    m_pSet->AddNew();
    UpdateData();
    m_pSet->m_number=m_edit_number;
    m_pSet->m_name=m_edit_name;
    m_pSet->m_age=m_edit_age;
    m_pSet->m_math=m_edit_math;
    m_pSet->Update();
    m_pSet->MoveLast();
   
}

void COdbc1Dlg::OnButtonDelete()
{
    // TODO: Add your control notification handler code here
    m_pSet->Delete();
    m_pSet->Requery();
    m_edit_number=m_pSet->m_number;
    m_edit_name=m_pSet->m_name;
    m_edit_age=m_pSet->m_age;
    m_edit_math=m_pSet->m_math;
    UpdateData(FALSE);


}

void COdbc1Dlg::OnButtonEdit()
{
    // TODO: Add your control notification handler code here
    m_pSet->Edit();
    UpdateData();
    m_pSet->m_number=m_edit_number;
    m_pSet->m_name=m_edit_name;
    m_pSet->m_age=m_edit_age;
    m_pSet->m_math=m_edit_math;
    m_pSet->Update();
}

posted on 2013-03-11 11:02  冰河程序猿  阅读(180)  评论(0编辑  收藏  举报

导航