赠送1000分可用分,寻求ALT OLE DB的问题解答

pony_utc 2002-04-21 05:55:08
1.用ALT OLE DB访问ACCESS数据库,如何知道记录的某字段为空,如何设置该字段为空。
2.用ALT OLE DB访问ACCESS数据库,如何新建ACCESS数据库
3.用ALT OLE DB访问ACCESS数据库,如何使用除SELECT以外的SQL语句(比如Create Table).
能提供范例更好!
我赶工程急用,希望各位大虾指教,我在此谢谢大家!!
...全文
105 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
blue_flash 2002-04-25
  • 打赏
  • 举报
回复
会写存取器吗?

COLUMN_ENTER
改成
COLUMN_ENTRY_STATUS
将Status变量设置成 DBSTATUS_S_ISNULL
ezway 2002-04-25
  • 打赏
  • 举报
回复
我很困惑的是:你是一级用户,怎么能赠送1000分可用分,
就是1分也没这个权限呀,,,,,,
pony_utc 2002-04-25
  • 打赏
  • 举报
回复
谢谢你,biggo!!
biggo 2002-04-25
  • 打赏
  • 举报
回复
建立一个CCommand对象
CCommand.open(session , '你建表的指令', &propset, NULL, DBGUID_DBSQL, False)
propset是什么东西,如果你用Oledb就应该知道吧,不要我说了。
好象propset的位置写为Null就可以了,最后一个参数一定是False
时间长了,我有点记不清指令的写法。
如果你想判断空值,好象利用alt向导自动产生的数据绑定类型是做不到的。
因为它们有的是确定的数据类型,如int类型等,你可以手工改为Variant类型,Variant类型数据是可以判断空值的。
你自己尝试一下
pony_utc 2002-04-25
  • 打赏
  • 举报
回复
谢谢你!biggo!!你能告诉我如何建表呢?建库和判断空值的问题我都解决了。
biggo 2002-04-24
  • 打赏
  • 举报
回复
呵,呵!
不错,居然还有人喜欢直接使用原生的OleDB
OleDB最大的优势,就是快,
我做个一个项目,
第一次做的时候用的是VC+OleDB访问数据库,
第二次做的时候是Delphi_ADO,
在程序的核心——处理数据部分速度上的感觉简直差了一个数量级。
你问我为什么第二次用的时候不用VC+OleDB了,
因为想贪图方便,把界面等做好点,也就只好牺牲速度了。
使用OleDB有两种方法,一种是真正的原生OleDB,不过这种方式,除非你是开发数据库引擎驱动驱动程序之类的,才建议采用,不然,这种方式的代码,简直可以用海量来形容。不好写。
第二种是采用MFC封装的OleDB类来写,我建议采用这种方式,我也是这么用的。
用它来开发程序,感觉和用ADO来开发差不多,但执行效率要高很多。
如果你要学,你的问题,不是三言两语就能说完的,建议你下载VC6的“模板库参考手册”那里面说的很清楚使用方法,全中文,文件大小12M多,华康格式的书,
用VC6你要装上sp5再用Oledb,sp4中Oledb有一个小问题。
你先研究这本书,然后在Msdn中间看看相关内容。不用多长时间能掌握的。

楼上的朋友用的其实是ADO,回答错了方向。
希望你成功。
招RD和QA 2002-04-22
  • 打赏
  • 举报
回复
gzer
蒋晟 2002-04-21
  • 打赏
  • 举报
回复
#import "c:\Program Files\Common Files\system\ado\msadox.dll" \
no_namespace

//Function declarations
inline void TESTHR(HRESULT x) {if FAILED(x) _com_issue_error(x);};
//////////////////////////////////////////////////////////
// //
// CreateTableX Function //
// //
//////////////////////////////////////////////////////////
void CreateTableX()
{
HRESULT hr = S_OK;

// Define ADOX object pointers.
// Initialize pointers on define.
// These are in the ADOX:: namespace.
_CatalogPtr m_pCatalog = NULL;
_TablePtr m_pTable = NULL;

try
{
TESTHR(hr = m_pCatalog.CreateInstance(__uuidof(Catalog)));

//Open the catalog
m_pCatalog->PutActiveConnection(
"Provider=Microsoft.Jet.OLEDB.4.0;" \
"data source=c:\\Program Files\\Microsoft Office"
"\\Office\\Samples\\Northwind.mdb;");

TESTHR(hr = m_pTable.CreateInstance(__uuidof(Table)));
m_pTable->PutName("MyTable");
m_pTable->Columns->Append("Column1",adInteger,0);
m_pTable->Columns->Append("Column2",adInteger,0);
m_pTable->Columns->Append("Column3",adVarWChar,50);
m_pCatalog->Tables->Append(
_variant_t((IDispatch *)m_pTable));

//Delete the table
m_pCatalog->Tables->Delete("MyTable");
}

catch(_com_error &e)
{
// Notify the user of errors if any.
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());

printf("\n\tSource : %s \n\tdescription : %s \n ",
(LPCSTR)bstrSource,(LPCSTR)bstrDescription);
}

catch(...)
{
cout << "Error occured in include files...."<< endl;
}
}
蒋晟 2002-04-21
  • 打赏
  • 举报
回复
#import "c:\Program Files\Common Files\system\ado\msadox.dll" no_namespace
#import "c:\Program Files\Common Files\system\ado\msado15.dll"

#define TESTHR(x) if FAILED(x) _com_issue_error(x);

//------------------------------------------------------------ //
//CreateDatabaseX
//Purpose: create a new Jet database with the Create method
//------------------------------------------------------------ //
void CreateDatabaseX()
{
HRESULT hr = S_OK;

// Define ADOX object pointers.
// Initialize pointers on define.
// These are in the ADOX:: namespace.

_CatalogPtr m_pCatalog = NULL;


//Set ActiveConnection of Catalog to this string
_bstr_t strcnn("Provider=Microsoft.JET.OLEDB.4.0;"
"Data source = c:\\new.mdb");
try
{
TESTHR(hr = m_pCatalog.CreateInstance(__uuidof (Catalog)));
m_pCatalog->Create(strcnn);

}

catch(_com_error &e)
{
// Notify the user of errors if any.
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());

printf("\n\tSource : %s \n\tdescription : %s \n ",(LPCSTR)bstrSource,(LPCSTR)bstrDescription);

}

catch(...)
{
cout << "Error occured in include files...."<< endl;
}

}
昵称被占用了 2002-04-21
  • 打赏
  • 举报
回复
1、对你的ALT不了解,但可以用SQL语句来区分:
where colname is null

update ... set colname = null ...

3、没用过VC的OLE DB,但在VB里的用法不复杂,你看看VC的对应语句应该是什么。
con.execute "Create tabel test(...)"
con.execute "insert into test(a,b,c) values('z',1,#2002-4-21#)"
con.execute "update testset c=#2002-4-21# where a='a'"
等等。



pony_utc 2002-04-21
  • 打赏
  • 举报
回复
我的环境是Window98,VC6.0,用ACCESS97,Microsoft.Jet.OLEDB.3.51连接

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧