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

原创 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);

云原生路演总结

-
  • 1970年01月01日 08:00

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

现在来CSDN社区的时间比较多了,我从我自己得分的问题里选出了一部分自认为比较有代表性的整理成一个精华版,也算自己对VC/MFC版尽一点绵薄之力吧,虽然问题本身也许没有什么代表性,或者对一些新手不...
  • hejishan
  • hejishan
  • 2008-03-11 11:02:00
  • 132

数据库相关问题

Linux django 链接mysql数据库权限问题 ERROR 1698 (28000): Access denied for user 'root'@'localhost' 参考 ...
  • u011085734
  • u011085734
  • 2018-01-18 11:43:27
  • 37

总结面经中常考的MYSQL面试问题(一)

1. 如何设计一个高并发的系统① 数据库的优化,包括合理的事务隔离级别、SQL语句优化、索引的优化② 使用缓存,尽量减少数据库 IO③ 分布式数据库、分布式缓存④ 服务器的负载均衡2. 锁的优化策略①...
  • ligupeng7929
  • ligupeng7929
  • 2018-03-02 11:18:18
  • 510

数据库相关面试题

Oracle与mysql的区别mysql是中小型数据库 开源免费 Oracle数据是大型数据库,闭源,收费(个人使用免费,商业用途收费),主键        mysql可以设置成主键自动增长,在建表是...
  • panhaigang123
  • panhaigang123
  • 2018-03-16 22:08:12
  • 81

错误 5173:不能使文件与不同的数据库相关,测试过,能行。

附加数据库时出现的问题从提示看,应该你要附加的数据文件和日志属于不同的数据库备份你的数据文件,试试按下面的步骤处理能否解决:1.新建一个同名的数据库2.再停掉sql server(注意不要分离数据库)...
  • Ray_Adon
  • Ray_Adon
  • 2009-12-05 11:11:00
  • 3826

需求分析中的问题总结

阅读完林锐《软件工程与项目管理解析》中关于需求分析
  • brightming
  • brightming
  • 2014-06-29 10:41:07
  • 1185

数据库基本知识点总结

数据库也是计算机类笔试面试中不可避免会遇到的考点,尤其是银行和部分传统软件类公司。这里根据整理的资料,对数据库的相关知识也做个总结吧。希望学过数据库但长时间不用的同学根据这些知识能够回忆和重拾,没学过...
  • liuxyen
  • liuxyen
  • 2017-11-21 13:43:48
  • 2141

数据库配置以及连接出现的问题和解决方法

1.连接数据库时提示:无监听 查看装载数据库机器的监听是否启动,方法如下: lsnrctl status 查看监听状态 lsnrctl start 启动监听程序 2.ORA-12514: TN...
  • maomaoduoer
  • maomaoduoer
  • 2013-12-13 10:24:48
  • 326

数据库相关总结

Spring事务传播行为:https://www.cnblogs.com/softidea/p/5962612.html数据库事务隔离级别:https://www.cnblogs.com/huanon...
  • collonn
  • collonn
  • 2018-03-29 16:01:29
  • 15
收藏助手
不良信息举报
您举报文章:数据库相关问题的部分总结
举报原因:
原因补充:

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