首页 > 代码库 > 创建表——command命令

创建表——command命令




本文由 代码助手软件 整理发布 内容与本软件无关 更惬意的读、更舒心的写、更轻松的发布









            _CommandPtr spCmd;                      //定义CommandPtr变量
            _RecordsetPtr pRecordSet;               //定义记录集
            long count=0;
            
            spCmd.CreateInstance(__uuidof(Command)); //创建Command实例
            spCmd->ActiveConnection=m_pConnection;   //将Command与数据库关联
            spCmd->CommandText=(LPCTSTR)strCmd;      //strCmd命令
            pRecordSet=spCmd->Execute(NULL,NULL,adCmdText);  //执行Command命令后返回的结果集

实例一 创建表:

strCmd.Format(
                _T("create table 课堂成绩表%d(学号 INTEGER NOT NULL PRIMARY KEY,姓名 TEXT,优秀 INTEGER,良 INTEGER,一般 INTEGER,旷课 INTEGER,主动加分 INTEGER)"),
                m_pParentStudentInfo->m_nXueqiID);
            spCmd->CommandText=(LPCTSTR)strCmd;
            spCmd->Execute(NULL,NULL,adCmdText);
            
            
            //为成绩表添加学号为0 的学生   用姓名项 记录总的点名次数
            strCmd.Format(
                _T("Insert into  课堂成绩表%d(学号,姓名) values(0,0)"),
                m_pParentStudentInfo->m_nXueqiID);
                
            spCmd->CommandText=(LPCTSTR)strCmd;
            spCmd->Execute(NULL,NULL,adCmdText);

void CKemuPage::CreateTable(int nID)
{
    //创KeshiID、ZhishidianID、WentiID表
    try{
        _CommandPtr spCmd;  
        _RecordsetPtr pRecordSet;  
        spCmd.CreateInstance(__uuidof(Command));  
        spCmd->ActiveConnection=m_pConnectionPtr;  
        CString strCmd;
        //创建keshiID  
        strCmd.Format(  
            _T("create table Keshi%d(课时 INTEGER NOT NULL PRIMARY KEY,题目 TEXT(100))"),  
            nID);  
        spCmd->CommandText=(LPCTSTR)strCmd;  
        spCmd->Execute(NULL,NULL,adCmdText);  
        //创建ZhishidianID  
        strCmd.Format(  
            _T("create table Zhishidian%d(ID AUTOINCREMENT(1,1) PRIMARY KEY,课时 INTEGER,知识点ID INTEGER,知识点 Memo,重点 Bit,难点 Bit)"),  
            nID);  
        spCmd->CommandText=(LPCTSTR)strCmd;  
        spCmd->Execute(NULL,NULL,adCmdText);  
        //创建WentiID  
        strCmd.Format(  
            _T("create table Wenti%d(ID AUTOINCREMENT(1,1) PRIMARY KEY,课时ID INTEGER,知识点ID INTEGER,问题ID INTEGER,问题 Memo,答案 Memo)"),  
            nID);  
        spCmd->CommandText=(LPCTSTR)strCmd;  
        spCmd->Execute(NULL,NULL,adCmdText);  
    }catch(_com_error &e)
    {
        MessageBox(e.ErrorMessage());
    }
}

            //创建班级信息表----班级表
            strCmd.Format(
                _T("create table 班级表%d(学号 INTEGER NOT NULL PRIMARY KEY,姓名 TEXT(20),性别 TEXT(2),地址 TEXT(100),联系方式 TEXT(100),备注 TEXT(200),照片 Image)"),
                iClassID);
            spCmd->CommandText=(LPCTSTR)strCmd;
            spCmd->Execute(NULL,NULL,adCmdText);
            
            //创建成绩表-----ID课程成绩表  
            strCmd.Format(
                _T("create table 课堂成绩表%d(学号 INTEGER NOT NULL PRIMARY KEY,姓名 TEXT(20),优秀 INTEGER,良 INTEGER,一般 INTEGER,旷课 INTEGER,主动加分 INTEGER)"),
                iClassID);
            spCmd->CommandText=(LPCTSTR)strCmd;
            spCmd->Execute(NULL,NULL,adCmdText);
            //为成绩表添加学号为0 的学生   用姓名项 记录总的点名次数
            strCmd.Format(
                _T("Insert into  课堂成绩表%d(学号,姓名) values(0,0)"),
                iClassID);
            spCmd->CommandText=(LPCTSTR)strCmd;
            spCmd->Execute(NULL,NULL,adCmdText);

Access创建表的同时 给字段添加默认项,否则查找时可能找不到预期结果

            //创建成绩表-----ID课程成绩表  
            strCmd.Format(
                _T("create table 课堂成绩表%d(学号 INTEGER NOT NULL PRIMARY KEY,姓名 TEXT(20),优秀 INTEGER DEFAULT 0 NOT NULL,良 INTEGER DEFAULT 0 NOT NULL,一般 INTEGER DEFAULT 0 NOT NULL,旷课 INTEGER DEFAULT 0 NOT NULL,主动加分 INTEGER DEFAULT 0 NOT NULL)"),
                iClassID);
            spCmd->CommandText=(LPCTSTR)strCmd;
            spCmd->Execute(NULL,NULL,adCmdText);

实例二: 选择表中的记录

           strCmd.Format(
                _T("select * from 班级表%d"),
                m_pParentStudentInfo->m_nClassID);
            spCmd->CommandText=(LPCTSTR)strCmd;
            pRecordSet=spCmd->Execute (NULL,NULL,adCmdText);
            
            
            int nXuehao=0;
            CString nameStr;
            _variant_t varValue;
            while (!pRecordSet->adoEOF)
            {
                varValue=pRecordSet->GetCollect(_T("学号"));
                if (varValue.vt!=NULL)
                {
                    nXuehao=_ttoi((LPCTSTR)_bstr_t(varValue));
                }else
                    continue;
                varValue=pRecordSet->GetCollect (_T("姓名"));
                if (varValue.vt!=NULL)
                {
                    nameStr=(LPCTSTR)_bstr_t(varValue);
                }
                strCmd.Format(
                    _T("Insert into  课堂成绩表%d(学号,姓名) values(%d,\"%s\")"),
                    m_pParentStudentInfo->m_nXueqiID,
                    nXuehao,
                    nameStr);
                spCmd->CommandText=(LPCTSTR)strCmd;
                spCmd->Execute(NULL,NULL,adCmdText);
                pRecordSet->MoveNext ();
            }

实例三 更新表

            strCmd.Format(_T("update classInfo set 班级ID=%d where ID=%d"),
                m_pParentStudentInfo->m_nClassID,
                m_pParentStudentInfo->m_nXueqiID);
            spCmd->CommandText=(LPCTSTR)strCmd;
            spCmd->Execute(NULL,NULL,adCmdText);

实例四:查找排序最高的

            strCmd.Format(_T("select top 1 * from ClassInfo order by ID desc"));
            pRecordSet=NULL;
            spCmd->CommandText=(LPCTSTR)strCmd;
            pRecordSet=spCmd->Execute(NULL,NULL,adCmdText);
            _variant_t vID;
            int iClassID=0;
            ASSERT(pRecordSet!=NULL);            
            vID=pRecordSet->GetCollect ("ID");
            //获得新插入班级的ID
            ASSERT (vID.vt!=NULL);
            m_pParentStudentInfo->m_nXueqiID=_ttoi((LPCTSTR)(_bstr_t(vID)));

实例五 插入

            //没有同样学期的话,则将其插入
            strCmd.Format(
                _T("insert into ClassInfo(入学年,班级,学期,班级ID)  values(%d,\"%s\",\"%s\",%d)"),
                _ttoi(ruxuenianStr),
                banjiStr,
                xueqiStr,
                m_pParentStudentInfo->m_nClassID);
            spCmd.CreateInstance(__uuidof(Command));
            spCmd->ActiveConnection=m_pConnection;
            spCmd->CommandText=(LPCTSTR)strCmd;
            spCmd->Execute(NULL,NULL,adCmdText);

实例六 确定是否有相同的

            //确定是否已有同样的学期
            CString strCmd;
            strCmd.Format(
                _T("select count(*) from ClassInfo where 入学年=%d and 班级=\"%s\" and 学期=\"%s\""),
                _ttoi(ruxuenianStr),
                banjiStr,
                xueqiStr);
                
                
            _CommandPtr spCmd;
            _RecordsetPtr pRecordSet;
            long count=0;
            spCmd.CreateInstance(__uuidof(Command));
            spCmd->ActiveConnection=m_pConnection;
            spCmd->CommandText=(LPCTSTR)strCmd;
            pRecordSet=spCmd->Execute(NULL,NULL,adCmdText);
            count=(long)pRecordSet->GetCollect ((long)0);
            
            
            if (count>0)
            {
                AfxMessageBox (L"已经存在此学期,新从新设计新学期的名字");
                return;
            }


创建表——command命令