`
lovnet
  • 浏览: 6881523 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

数据库相关问题的部分总结

阅读更多

现在来CSDN社区的时间比较多了,我从我自己得分的问题里选出了一部分自认为比较有代表性的整理成一个精华版,也算自己对VC/MFC版尽一点绵薄之力吧,虽然问题本身也许没有什么代表性,或者对一些新手不太有帮助,但是我自认为涵盖了一些比较重要的话题,希望对大家有所帮助。

Q 怎样在vc中导出Excel表格?
A
导出数据:
SQL可以实现:
SELECT * INTO Material IN 'C:\DB' 'Excel 8.0' FROM tblMaterial
说明:
into 后面的 material 是XLS文件中要导入的表名
in后面的 'C:\DB' 就是你的导的XLS文件。
excel 8.0是要导出的数据库格式,把它换成 dBase IV 就可以导出 DBF 文件
tblmaterial 是MDB数据库中的要导出的表名
导入数据:
参考VB函数:
http://search.csdn.net/Expert/topic/828/828974.xml?temp=.6185572

Q ADO如何取得数据库中表的表名
A
_variant_t vFieldValue;
CString strFieldValue;
m_pRs=m_pConnection->OpenSchema(adSchemaTables);
while(VARIANT_FALSE==m_pRs->IsEOF)
{
strFieldValue=(char*)_bstr_t(m_pRs->GetCollect("TABLE_TYPE"));
if(!strcmp(strFieldValue.GetBuffer(0),"TABLE")||!strcmp(strFieldValue.GetBuffer(0),"table"))
{
strFieldValue.ReleaseBuffer();
strFieldValue=(char*)_bstr_t(m_pRs->GetCollect("TABLE_NAME"));
m_ctlList.AddString(strFieldValue);
}
m_pRs->MoveNext();
}
m_pRs->Close();

Q 在stdafx中加入
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF","adoEOF")后总是编译通不过,说是有EditModeEnum、RecordStatusEnum、ParameterDirectionEnum、LockTypeEnum、DataTypeEnum、FieldAttributeEnum重定义!
A
改成
#pragma warning(disable:4146)
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" named_guids rename("EOF","adoEOF"), rename("BOF","adoBOF")
#pragma warning(default:4146)
using namespace ADODB; 后错误都没有了

Q 怎么取得一个表的数据段信息(数据类型、长度、名称等)
A
#include <conio.h><br>#define PAUSE ?printf("\npress any key to exit"); getch();<br>#define _WIN32_DCOM<br>#pragma warning(push)<br>#pragma warning(disable:4146)<br>#import "e:\program files\common files\system\ado\MSADO15.DLL" no_namespace rename("EOF", "EndOfFile")<br>#pragma warning(pop)<br>int main(int argc, char* argv[])<br>{<br>_ConnectionPtr m_pConn;<br>_RecordsetPtr m_pRs;<br>CoInitializeEx(NULL, COINIT_MULTITHREADED);<br>_bstr_t bstrConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;"<br> "Data Source=F:\\lylong\\db1.mdb;Persist Security Info=False";<br>try{<br>m_pConn.CreateInstance( __uuidof(Connection) );<br>m_pRs.CreateInstance( __uuidof(Recordset) );<br>m_pConn-&gt;Open( bstrConnStr, "", "", adConnectUnspecified );<br>m_pRs-&gt;Open( "table1", <br> m_pConn.GetInterfacePtr(), adOpenForwardOnly, adLockOptimistic, adCmdTable);</conio.h>

long lColumn = m_pRs->Fields->Count;
printf("%-12s%-10s%-10s\n", "字段名", "长度", "类型");
for( long i=0; i{
printf("%-12s%-10d%-10d\n", (char*)m_pRs->Fields->Item[i]->Name,
m_pRs->Fields->Item[i]->DefinedSize,
m_pRs->Fields->Item[i]->Type);
}
m_pRs->Close();
m_pConn->Close();
}catch( _com_error e )
{
printf( "\n%s Error: %ld\r\n"
"%s\r\n"
"%s\r\n",
(char*)e.Source(),
e.Error(),
(char*)e.Description(),
(char*)e.ErrorMessage() );
m_pRs->Close();
m_pConn->Close();
}
CoUninitialize();
PAUSE;
return 0;
}
Also see this article
http://dev.csdn.net/article/25/25578.shtm

Q 如何读写SQL+ADO的datetime
A
写入时间值
COleDateTime oleDate = COleDateTime::GetCurrentTime();
_variant_t vtFld;
vtFld.vt = VT_DATE;
vtFld.date = oleDate;
pRecordSet4->PutCollect("date", vtFld);
读时间值
_bstr_t TheValue=m_pset->Fields->GetItem("出生年月")->Value;
temp=(char *)TheValue;
COleVariant vtime(temp);
vtime.ChangeType(VT_DATE);
COleDateTime time4=vtime;//读出的是COleDateTime

Q 如何判断access数据库中是否存在某个表
A
STDMETHODIMP CADOTier::get_IsExistTable(BSTR bsTable, long lType, VARIANT_BOOL *pVal)
{
  ADODB::_RecordsetPtr pRstSchema = NULL;
  pRstSchema = m_connection->OpenSchema(ADODB::adSchemaTables);
  _bstr_t bsTableName(bsTable);
  _bstr_t table_name("");
  _bstr_t table_type("");
  char *pTemp1=NULL,*pTemp2=NULL;
  pTemp1 = _com_util::ConvertBSTRToString(bsTableName);
  pTemp1 = strlwr(pTemp1);
  VARIANT_BOOL b=FALSE;
  while(!(pRstSchema->adoEOF))
  {
    table_name = pRstSchema->Fields->
    GetItem("TABLE_NAME")->Value;
    pTemp2 = _com_util::ConvertBSTRToString(table_name);
    pTemp2 = strlwr(pTemp2);
    table_type = pRstSchema->Fields->
    GetItem("TABLE_TYPE")->Value;
    if (lType == 1) //view type
    {
      if (table_type == _bstr_t("VIEW"))
      {
        if (strcmp(pTemp1,pTemp2)==0)
        b = TRUE;
      }
    }
    if (lType == 0) //table type
    {
      if (table_type == _bstr_t("TABLE"))
      {
        if (strcmp(pTemp1,pTemp2)==0)
        b = TRUE;
      }
    }
    pRstSchema->MoveNext();
  }
 
  // Clean up objects before exit.
  if (pRstSchema)
  if (pRstSchema->State == ADODB::adStateOpen)
  pRstSchema->Close();
  *pVal = b;
  return S_OK;
}

Q 用代码实现自动注册一个工程目录下的access数据库的ODBC数据源
A
CString sPath;
GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);//得到程序的路径
sPath.ReleaseBuffer ();
int nPos;
nPos=sPath.ReverseFind('\\');
sPath=sPath.Left(nPos);
nPos=sPath.ReverseFind('\\');
sPath=sPath.Left(nPos);
CString lpszFile=sPath+"\\lhwy.mdb"; //得到程序目录下的数据库的完整路径
char* szDesc;
int mlen;
szDesc=new char[256];
sprintf(szDesc,"DSN=%s? DESCRIPTION=TOC support source? DBQ=%s? FIL=MicrosoftAccess? DEFAULTDIR=%s??","lhwy",lpszFile,sPath); //形成一个SQLConfigDataSource函数参数串结构
mlen = strlen(szDesc);
for (int i=0; i<mlen i>{<br>if(szDesc[i]=='?')<br> szDesc[i] = '\0'; //替换上面串的?为\0,形成一个完整的串<br>}<br>if (FALSE == SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver (*.mdb)\0",(LPCSTR)szDesc))//注册数据库<br> AfxMessageBox("SQLConfigDataSource Failed");</mlen>

Q SQL Server实现模糊查询
A
strSQL.Format("select * from 表名 where 列 like '%%%s%%'",keyword);

分享到:
评论

相关推荐

    数据库基础学习的总结

    ### 数据库基础学习总结 #### 一、数据库概念与作用 **数据库**是一种组织和存储数据的方式,它允许用户高效地访问、管理和更新数据。在现代信息技术领域中,数据库是核心组成部分之一,广泛应用于各种软件系统和...

    数据库系统原理总结.pdf

    总结起来,数据库管理系统是数据管理的核心,如学生成绩管理系统就是基于数据库进行学生信息的管理。在软件开发中,熟练掌握数据库的增删改查操作是基础,这不仅关乎技术层面,也影响到系统的设计和安全性。深入理解...

    数据库系统复习总结

    * 数据库设计是数据库系统设计的核心部分,包括概念设计、逻辑设计、物理设计。 * 数据库设计的目的是为了设计一个高效、可靠、安全的数据库系统。 * E-R 图是概念设计阶段中的一种重要工具,用于描述实体和实体之间...

    数据库经典笔试题总结

    这篇“数据库经典笔试题总结”旨在汇总一些常见的数据库问题,帮助读者深入理解和掌握数据库的基础知识及高级概念。 首先,我们需要理解数据库的基本概念。数据库是一个组织和存储数据的系统,它能够按照用户需求...

    C#语言和数据库技术基础总结

    在IT领域,C#语言和数据库技术是两个至关重要的组成部分,尤其对于开发高效、稳定的应用程序至关重要。本文将深入探讨C#语言的基础知识以及数据库技术的基本概念,旨在为初学者提供一个全面的理解。 首先,C#(读作...

    数据库原理与应用课程总结

    数据库原理与应用课程总结主要涵盖了数据库的理论知识和SQL Server 2000的实践操作。理论知识部分包括基础篇、设计篇和系统篇。基础篇着重于数据库的基础概念,如信息、数据、数据处理,以及数据库、数据库管理系统...

    数据库学习总结-总集

    【数据库学习总结-总集】 在信息技术领域,数据库是存储和管理数据的核心工具,它扮演着数据仓库的角色,为各种应用程序提供数据支持。本总结旨在深入探讨数据库的基础知识、主要类型、设计原则以及最佳实践,帮助...

    数据库原理知识点总结

    ### 数据库原理知识点总结 #### 一、数据库系统概述 **1. 数据**: 在这里指的是描述事物的符号记录,它可以是数字、文字、图形、图像、声音等多种形式。 **2. 数据库(DB)**: 是长期储存在计算机内的、有组织的...

    第二章数据库总结关系数据库.pdf

    关系数据库是现代数据库系统的核心,它基于数学中的关系理论,主要由关系数据结构、关系模式和关系操作等概念构成。...理解这些概念对于设计、实现和维护数据库系统至关重要,也是从事数据库相关工作的基础。

    Oracle数据库字符集问题总结

    Oracle数据库字符集问题总结主要关注的是在数据迁移和交互时由于字符集差异导致的问题。字符集是决定数据库如何解释和存储字符的规则集合,对于Oracle数据库来说,它直接影响到数据的正确性和兼容性。 首先,Oracle...

    三级数据库总结

    本文将对数据库相关的知识点进行详细总结,特别是针对计算机三级数据库考试的内容。 1. 数据库管理系统(DBMS)是操纵和管理数据库,控制数据资源使用的软件,如Oracle、SQL Server、MySQL等。 2. 事务是操作系统...

    数据库原理选择题总结

    数据库原理是计算机科学中至关重要的一部分,它涉及到数据的组织、存储和访问。以下是一些关于数据库原理的关键知识点,根据题目内容进行的详细解释: 1. **数据视图**:单个用户使用的数据视图的描述被称为外模式...

    数据库系统概论部分知识点总结.doc

    数据库系统概论部分知识点总结

    JDBC连接数据库经验总结

    **JDBC连接数据库经验总结** Java Database Connectivity (JDBC) 是Java编程语言中用于与关系数据库交互的标准API。它提供了一种规范,使得Java开发者能够使用标准的Java语句来执行SQL命令,从而实现对数据库的操作...

    Mycat数据库中间件技术总结

    Mycat是一种流行的数据库中间件技术,支持分库分表,主要用于解决数据库水平拆分的问题。下面是对Mycat数据库中间件技术的总结: 数据库切分理论 数据库切分是指将大型数据库分成多个小型数据库的过程。这种技术...

    VC++数据库编程总结

    【VC++数据库编程总结】 在IT领域,尤其是软件开发中,数据库编程是不可或缺的一部分,尤其在使用VC++作为开发工具时。VC++可以与多种数据库系统进行交互,如SQL Server、Oracle等,通过不同的访问技术实现数据的...

Global site tag (gtag.js) - Google Analytics