iCAx开思工具箱

标题: 【求助】UG二次开发有连接数据库的函数吗? [打印本页]

作者: jackezhang    时间: 2004-10-5 01:25
标题: 【求助】UG二次开发有连接数据库的函数吗?
请问各位高手UGOPEN C++库函数中有没有提供连接数据库的函数?
小弟做个东西,一定要连上数据库Access,获取一些数据。望高手指点:)
作者: 深夜摔键盘    时间: 2004-10-5 11:08
UG二次开发的工具是VC,开发的方式是写DLL。VC有数据库接口,什么ODBC,DAO,OLE DB,ADO。
UG不会提供连接数据库的函数吧。
  
ACCESS,用DAO后者ADO都不错。后者的性能要好一些。需要看看VC数据库的书
作者: fourwood    时间: 2004-10-7 10:36
如果你用Excel的话,UG有专门的读表格的函数
作者: mizzle    时间: 2004-10-8 08:48
这个东东,欧做过一点点,其实和在完全的vc下访问数据库是一样的,只是,加了一个ug的入口函数,可以让你的程序在ug下运行即可。
在你建立工程后,加入#include <uf.h>
作者: jackezhang    时间: 2004-10-8 16:39
楼上的这位兄弟的意思是,UG连结数据库完全和VC连结一样了,就照着VC连结数据库的格式作就行了?
作者: mizzle    时间: 2004-10-8 18:38
对地,嘿嘿,建立一dll工程后,加入#include <uf.h>
然后CTestApp theApp;
  
extern "C" __declspec(dllexport) void ufusr(char *param, int *retcode, int rlen)
{
  
  UF_initialize();
  
  CTestDlg dlg;
                    dlg.DoModal();
  UF_terminate();
}
extern "C" int ufuser_ask_unload(void)
{
  return(UF_UNLOAD_UG_TERMINATE);
}
上面是把mfc里的对话框和ug连到一起了
其中testdlg是建立对话框出现的,就可以在testdlg.cpp里进行做了,和用
vc访问数据库是一个样子的。
作者: tomcindy    时间: 2006-6-20 09:18
原帖由  于 2004-10-8 10:38 发表
对地,嘿嘿,建立一dll工程后,加入#include <uf.h>
然后CTestApp theApp;
  
extern "C" __declspec(dllexport) void ufusr(char *param, int *retcode, int rlen)
{
  
  ...




请问#include include <uf.h>这句是直接加么?加在何处?谢谢
作者: gangnan    时间: 2006-6-27 15:30
正常的ug二次开发的代码写就行了。
调用一个对话框。
在对话框类里面vc连接数据库就行了
作者: tomcindy    时间: 2006-6-28 01:39
请帮我看看这个连接数据库的程序,编译通过,却实现不了连接.谢谢....

是mfc dll 的ug二次开发.ufsta接口放在另外的文件中


BOOL CElementInfoDlg::OnInitDialog()
{AfxOleInit();//初始化COM
HRESULT hr;
try
{hr=m_pCon.CreateInstance("ADODB.Connection");
if(SUCCEEDED(hr))
{
hr=m_pCon->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\fixture\code\fixture.mdb","","",adModeUnknown);}
}
catch (_com_error e){CString errormessage;
                errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
                AfxMessageBox(errormessage);///显示错误信息
                return FALSE;}
try
{
m_pRec.CreateInstance("ADODB.Recordset");

m_pRec->Open("SELECT*FROM 元件信息表",_variant_t((IDispatch*)m_pCon,true),adOpenDynamic,adLockOptimistic,adCmdText);
//创建记录集*/
m_bSuccess= TRUE;
_variant_t vFieldValue;CString sname,stype;//操作数据库
        m_pRec->MoveFirst();
        vFieldValue=m_pRec->GetCollect("元件名称");
                sname=(LPCSTR)_bstr_t(vFieldValue);
                vFieldValue.Clear();
        vFieldValue=m_pRec->GetCollect("所属类别");
stype=(LPCSTR)_bstr_t(vFieldValue);
       

m_name=sname;m_type=stype;        //赋值给编辑框控件
UpdateData(FALSE);
}
catch(_com_error e)///捕捉异常
        {
                AfxMessageBox("读取数据库失败!");///显示错误信息
        }

}
作者: gangnan    时间: 2006-6-28 09:39
呵呵,改成Data Source=c:\\fixture\\code\\fixture.mdb
作者: tomcindy    时间: 2006-6-28 19:20
呵呵,改成Data Source=c:\\fixture\\code\\fixture.mdb


成功解决!!!试来试去都不行,竟然是这里有问题!!!!

非常感谢...等做完整个一定整理一些注意小细节...




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3