VC连接ORACLE问题,100分求救,在线等。

diwaa 2006-04-05 07:22:44
各位:

我在用VC连接ORACLE时,用的不是ODBC,而是OLE,不过运行时提示:record set failed to open .


请问是什么问题,我只是连接ORACLE,还没有查询数据呢,在线等。谢谢
...全文
410 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
firmbird 2006-04-07
  • 打赏
  • 举报
回复
DBTYPE_DATE

DateTime Format
ActiveX Data Objects (ADO), OLE DB, and Open Database Connectivity (ODBC) applications should use the following escape clauses when specifying dates for input to INSERT and UPDATE statements. Use the 24-hour time format; do not use A.M or P.M to indicate morning or evening.

{ts 'YYYY-MM-DD [HH:MM:SS.FFF]'}, for example, {ts '2000-10-31 23:59:59.999'}


{d 'YYYY-MM-DD'}, for example, {d '2000-10-31'}


{t 'HH:MM:SS'} for example, {t '23:59:59'}
For further information, see Writing International Transact-SQL Statements in SQL Books Online.

On import, if one member of a multi-valued DateTime member is invalid, none of the DateTime members are imported.

MSDN还是蛮有用的,不要浪费啊
firmbird 2006-04-07
  • 打赏
  • 举报
回复
看得不太清楚,不知道你是用OLE DB模板类写的还是直接用的OLE DB 接口,看上去应该是前者,你的CZdwsrvSet类是从那个基类派生的?怎么封装的?
diwaa 2006-04-07
  • 打赏
  • 举报
回复
楼上大哥,
你给我几条增加记录的语句,谢谢!
firmbird 2006-04-07
  • 打赏
  • 举报
回复
呵呵,楼主幽默的,insert 语句不会返回记录集,叫他怎么打开呢?
diwaa 2006-04-07
  • 打赏
  • 举报
回复
是这样的,我用OLE打开一个ORACLE数据库,在做数据增加记录时
CZdwsrvSet datzztab;
cxsql.Format("insert into datzz values('1-1月-00','r','1')");
datzztab.Open(cxsql);
出错,提示:
File:c:\program files\microsoft visual studio\vc98\atl\include\altdbcli.h
Line:2854
Expression:GetInterface(0)!=0
不过数据能增加上,请各位高手指教。
diwaa 2006-04-07
  • 打赏
  • 举报
回复
字符和数字型的都能成功,但是日期型的字段不行,请问
class CBTEMP
{
public:
CBTEMP()
{
memset( (void*)this, 0, sizeof(*this) );
};

DBTIMESTAMP m_B01;
char m_B[11];
char m_B02[5];
double m_B03;
BEGIN_COLUMN_MAP(CBTEMP)
COLUMN_ENTRY_TYPE(1, DBTYPE_DBTIMESTAMP, m_B01)
COLUMN_ENTRY_TYPE(2, DBTYPE_STR, m_B)
COLUMN_ENTRY_TYPE(3, DBTYPE_STR, m_B02)
COLUMN_ENTRY_PS(4, 15, 2, m_B03)
END_COLUMN_MAP()
日期型的字段m_B01如何定义,是用DBTIMESTAMP m_B01;
数据如何转换,是用COLUMN_ENTRY_TYPE(1, DBTYPE_DBTIMESTAMP, m_B01)
以及m_B01如何赋值,
谢谢你。
stavck 2006-04-07
  • 打赏
  • 举报
回复
楼主不能说想细点?
firmbird 2006-04-07
  • 打赏
  • 举报
回复
这两个函数的参数都可以使用缺省值

CZdwsrvSet datzztab;
datzztab.Open("select * from tableName");

datzztab.Insert();

datzztab.b01=timeValue;
lstrcpy(datzztab.b02,stringValue);
datzztab.b03=longValue;

datzztab.SetData();

datzztab.Close();
k04 2006-04-07
  • 打赏
  • 举报
回复
北京奥赛尔生物工程技术有限公司

是一家位于北京市中关村科技园海淀园区,是由海外

留学 人员创建的一家高新技术企业 ,并被评为 中关村

留学人员创业园优秀企业 。(www.allshare.com.cn)

 

地址:北京、海淀、上地信息路26号、中关村留学生创业大厦

Tel : 010-82898000; 13601182765; 13683076911

现因业务拓展,需要组建新的团队,招聘以下人员:

职务 名额 职务描述
1、美工 1名 软件界面设计
2、网站制作 1名 HTML + JavaScript(PHP)
3、程序员 2名 Win32 API + C\C++
4、数据库管理员 1名 Oracle; SQL Sever 2000
diwaa 2006-04-07
  • 打赏
  • 举报
回复
谢谢firmbird(firmbird
请你再告诉我SetData和Insert的用法,参数。
比如我要加入的表的字段为
b01 日期型
b02 字符型,10个字符
b03 数字型,如213.45

回复后马上结贴,谢谢。
firmbird 2006-04-07
  • 打赏
  • 举报
回复
一切正常
就是调用的时候你的SQL语句写错了,你要添加记录的话,应该先用Open("select * from XXX"),打开记录集,再调用Insert()方法,给属性赋值后调用SetData()。
diwaa 2006-04-07
  • 打赏
  • 举报
回复
请firmbird(firmbird) 大哥帮我看看,重谢!!
diwaa 2006-04-07
  • 打赏
  • 举报
回复
class CDATZZ
{
public:
CDATZZ()
{
memset( (void*)this, 0, sizeof(*this) );
};

CTime m_B01;
char m_B02[2];
char m_B03[2];


BEGIN_COLUMN_MAP(CDATZZ)
COLUMN_ENTRY_TYPE(1, DBTYPE_DBTIMESTAMP, m_B01)
COLUMN_ENTRY_TYPE(2, DBTYPE_STR, m_B02)
COLUMN_ENTRY_TYPE(3, DBTYPE_STR, m_B03)
END_COLUMN_MAP()

};

class CZdwsrvSet : public CCommand<CAccessor<CDATZZ> >
{
public:

HRESULT Open(CString cxsql)
{

CDataSource db;
CSession session;
HRESULT hr;

CDBPropSet dbinit(DBPROPSET_DBINIT);
dbinit.AddProperty(DBPROP_AUTH_PASSWORD, "123456");
dbinit.AddProperty(DBPROP_AUTH_USERID, "jnabc");
dbinit.AddProperty(DBPROP_INIT_DATASOURCE, "jnabc");
dbinit.AddProperty(DBPROP_INIT_LCID, (long)2052);
dbinit.AddProperty(DBPROP_INIT_PROMPT, (short)4);
dbinit.AddProperty(DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO, true);

hr = db.OpenWithServiceComponents("MSDAORA.1", &dbinit);
if (FAILED(hr))
return hr;

hr = session.Open(db);
if (FAILED(hr))
return hr;

CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_CANFETCHBACKWARDS, true);
propset.AddProperty(DBPROP_IRowsetScroll, true);
propset.AddProperty(DBPROP_IRowsetChange, true);
propset.AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_INSERT | DBPROPVAL_UP_DELETE );


hr = CCommand<CAccessor<CDATZZ> >::Open(session, cxsql, &propset);

if (FAILED(hr))
{
AfxMessageBox("打开出错");
return hr;
}

return MoveNext();
}

};
syy64 2006-04-06
  • 打赏
  • 举报
回复
提示:记录集未打开。
diwaa 2006-04-06
  • 打赏
  • 举报
回复
能不能说得详细点,没人知道吗?

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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