我对于ADO的链接 发SQL语句 发存储过程 获得结果集等均会,但是领导要我做一个对于数据库的通用类库,并自动对数据库中每个表生成自己的类库,并实现增删改查,但是我真的没有什么思路啊(呵呵面向对象我差啊)
但是独立对于单表的我已经做完了,明天我将贴出,忘各位高手给出方法:---最好有现成的代码
没有给个思路也非常感谢
但是独立对于单表的我已经做完了,明天我将贴出,忘各位高手给出方法:---最好有现成的代码
没有给个思路也非常感谢
解决方案 »
- 一个销毁窗体的问题
- ComboBox::DrawItem 点击下拉按钮只看到绘制第一项的效果,其他向导绘制效果看不见
- 为什么我的DLL中的PreTranslateMessage(MSG* pMsg)函数无法被调用?
- 求购表格控件
- vc调试时,怎么操作可以看到堆和栈的内容
- 怎么画不出来图像?各位大哥帮帮忙啊!
- VC,毕业论文(一万字),那位DD有时间,5月10日前完成。
- 不知在哪里能下载platfor sdk,帮忙告小弟一下。(不要微软站点的)
- 如何截取View的WM_CLOSE消息,或别的方法实现取得关闭VIEW之前...,(用WM_DESTROY,不行)
- MFC创建类问题
- 我淡定不了了,散100分寻求帮助
- 说为了数据安全而把整张表的字段内容加密,合理么?
SELECT SNAME.NAME,SCOL.NAME,STYPE.NAME,STYPE.MAX_LENGTH
FROM SYSOBJECTS SNAME, sys.all_columns SCOL,sys.types STYPE WHERE SNAME.TYPE='U' AND
SCOL.OBJECT_ID=SNAME.ID AND STYPE.SYSTEM_TYPE_ID=SCOL.SYSTEM_TYPE_ID
ORDER BY SNAME.NAME提取表名
SELECT NAME,id FROM SYSOBJECTS WHERE TYPE='U'
这些我都会,单表的我也做了,就不知道如何自动生成所有类啊
---ado_conn.cpp
#include "stdafx.h"
#include "ADO_Conn.h"
ADO_Conn::ADO_Conn(void)
{
}ADO_Conn::~ADO_Conn(void)
{
}
////数据库初始设置
//对数据库进行连接
/*
输入条件 无
输出结果 无
*/
bool ADO_Conn::InitADOConn()
{
bool m_State=false;
CoInitialize(NULL);
pConn.CreateInstance (__uuidof(Connection));
pRst.CreateInstance (__uuidof(Recordset));
_bstr_t strConn;
CString get;
////增加读写XML文档
m_State=ReadXMLToCstring("DataBaseconfig.xml","//provide",get);
strConn=(_bstr_t)get; m_State=ReadXMLToCstring("DataBaseconfig.xml","//password",get);
strConn+=(_bstr_t)get; m_State=ReadXMLToCstring("DataBaseconfig.xml","//security",get);
strConn+=(_bstr_t)get; m_State=ReadXMLToCstring("DataBaseconfig.xml","//catalog",get);
strConn+=(_bstr_t)get; m_State=ReadXMLToCstring("DataBaseconfig.xml","//datasource",get);
strConn+=(_bstr_t)get;
//增加错误陷阱
try
{
if ( m_State==true )
{
pConn->ConnectionString=strConn;
pConn->Open (strConn,"sa","123456",adConnectUnspecified);
}
else
return m_State; }
catch(_com_error e)
{
AfxMessageBox("数据库无法连接!");
m_State=false;
return m_State;
}}//读取XML文件到一个字符串GetCstring
bool ADO_Conn::ReadXMLToCstring( CString XMLPath,CString NodeName,CString &GetCstring )
{
bool m_State=false;
//读取XML文件
MSXML2::IXMLDOMDocumentPtr pDoc;
HRESULT hr;
::CoInitialize(NULL); //初始化COM环境
hr=pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
if(!SUCCEEDED(hr))
{
return FALSE;
}
CString filepath = GetFilePath(XMLPath);
CFileFind fFind;
BOOL b=fFind.FindFile(filepath);
if(b==0)
{
AfxMessageBox("配置文件不存在!");
return FALSE;
}
//赋值给 GetCstring
////////////////////////////////////////////////////////////////////
pDoc->load( (_bstr_t)XMLPath );
MSXML2::IXMLDOMNodePtr childNode ;
VARIANT varVal;
childNode = pDoc->selectSingleNode( (_bstr_t)NodeName );
//节点值
childNode->get_nodeTypedValue(&varVal);
GetCstring = (BSTR)(_bstr_t)varVal;
m_State=true;
return m_State;
}//获得正常的路径---C++可以识别的
CString ADO_Conn:: GetFilePath(const char *filename)
{
char path[MAX_PATH];
//GetCurrentDirectory(MAX_PATH,path); //获取程序的当前文件夹 ,该函数得到的是可执行程序.exe所在的文件夹.....\socket&com\server
GetModuleFileName(NULL,path,MAX_PATH); //得到程序运行的当前路径,这个路径包括可执行程序.exe.........\socket&com\server\release\server.exe //分离路径和文件名。
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT];
_splitpath(path, drive, dir, fname, ext );
CString str;
str.Format("%s\%s",drive,dir);
CString Path =str + "\\" + filename;
return Path;
}//关闭数据库的连接
bool ADO_Conn::CloseConn(_ConnectionPtr & m_Conn)
{
bool m_State=false;
m_Conn->Close();
m_State=true;
return m_State;
}
//关闭数据库的结果集
bool ADO_Conn::CloseRecorderSet(_RecordsetPtr & m_Prst)
{
bool m_State=false;
m_Prst.Release();
m_State=true;
return m_State;
}
--单表查询的贴不下啊
http://blog.csdn.net/xianglitian/article/details/5617173