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

原创 2004年08月28日 21:55:00

现在来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
#define PAUSE ?printf("/npress any key to exit"); getch();
#define _WIN32_DCOM
#pragma warning(push)
#pragma warning(disable:4146)
#import "e:/program files/common files/system/ado/MSADO15.DLL" no_namespace rename("EOF", "EndOfFile")
#pragma warning(pop)
int main(int argc, char* argv[])
{
 _ConnectionPtr m_pConn;
 _RecordsetPtr m_pRs;
 CoInitializeEx(NULL, COINIT_MULTITHREADED);
 _bstr_t bstrConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;"
   "Data Source=F://lylong//db1.mdb;Persist Security Info=False";
 try{
 m_pConn.CreateInstance( __uuidof(Connection) );
 m_pRs.CreateInstance( __uuidof(Recordset) );
 m_pConn->Open( bstrConnStr, "", "", adConnectUnspecified );
 m_pRs->Open( "table1",
   m_pConn.GetInterfacePtr(), adOpenForwardOnly, adLockOptimistic, adCmdTable);

  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{
  if(szDesc[i]=='?')
        szDesc[i] = '/0'; //替换上面串的?为/0,形成一个完整的串
}
if (FALSE == SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver (*.mdb)/0",(LPCSTR)szDesc))//注册数据库
     AfxMessageBox("SQLConfigDataSource Failed");

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

数据库总结--MySQL常见面试题

1.根据部门号从高到低,工资从低到高列出员工的信息 select * from employee order by dept_id desc,salary 2.union和union all的...
  • CodingAlarm
  • CodingAlarm
  • 2015年03月24日 17:56
  • 5826

Mybatis关联查询一对多使用插件分页返回数据不对

之前在做查询,开始没有考虑那么多,就没有做分页;后来随着数据量越来越大,不得不对以前的接口改成能分页的。我用的是mybatis自带的分页插件,可以在不改变原来的sql的基础上进行分页封装,这里面用的的...
  • huanggai1919
  • huanggai1919
  • 2015年06月23日 16:47
  • 2048

oracle 非常完整的总结

原文:http://blog.csdn.net/bff1022/article/details/17462435# 目录(?)[+] Ⅰ.oracle itcast 本文档对应程序在mye...
  • hello_zhou
  • hello_zhou
  • 2016年08月24日 22:30
  • 4206

vs2013下C/C++连接mysql数据库相关问题

项目需要,写了一个控制台程序,其中需要连接数据库查询数据并将查询结果通过socket发送到服务器端。由于之前没做过相关的东西,基本小白,做起来也相当费劲。好在最终解决了。现将问题解决过程记录下来,希望...
  • zhichitianya1234
  • zhichitianya1234
  • 2017年08月04日 15:40
  • 175

SQL 数据库相关问题

SQL Server 2012中,把数据库分离后,在SQL Server
  • u011044078
  • u011044078
  • 2014年09月23日 16:42
  • 352

Windows 系统 MySQL 数据库相关问题

前言本文包含以下内容,熟知请跳过~1、MSI文件安装MySQL2、ZIP文件安装MySQL3、强制修改MySQL登录密码4、Navicat for MySQL 破解1、推荐MSI文件安装MySQL首先...
  • plain_maple
  • plain_maple
  • 2016年11月16日 18:14
  • 206

NET Framework 4中ASP.NET数据库相关内容总结.doc

  • 2010年12月03日 15:53
  • 33KB
  • 下载

数据库相关知识的总结

近期做了一个仿QQ网络编程项目,但由于很多知识尚存在问题,在此,就不介绍项目成果了,待后面解决这些问题,会再更新博客。下面主要是讲解这个项目中数据库设计的一些问题。 数据库可以说是一个项目中很关键的...
  • u013318475
  • u013318475
  • 2014年07月19日 20:14
  • 466

mysql数据库相关知识总结

数据库的连接 cmd模式下: 切换到mysql.exe所在目录下输入命令:mysql -h主机名 -u用户名 -p密码 php连接: 面向对象的方法:@ $db=new mysqli("主机名...
  • galaxy96
  • galaxy96
  • 2016年10月28日 13:47
  • 156

c#中sqlite数据库相关的一些操作总结

在工作中经常用到数据库,可以进行一些操作,但是对于操作的理解不是很清楚,正好这次的工作又要用到数据库,完成之余对数据库进行一个简单易懂的总结,加深下理解。下面按照一些简单的操作来进行具体的小结。(代码...
  • csharpwys
  • csharpwys
  • 2017年05月26日 15:36
  • 141
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据库相关问题的部分总结
举报原因:
原因补充:

(最多只允许输入30个字)