我定义的对象入下:
CDataSource ds;
CSession ss;
CCommand<CDynamicAccessor> rs;我用rs.open(...)成功打开了数据库,并设置了DBPROP_UPDATABILITY
可我不知道怎么插入数据, 我调用rs.Insert()返回S_OK,但调用rs.Update时就出错,这是为什么??
CDataSource ds;
CSession ss;
CCommand<CDynamicAccessor> rs;我用rs.open(...)成功打开了数据库,并设置了DBPROP_UPDATABILITY
可我不知道怎么插入数据, 我调用rs.Insert()返回S_OK,但调用rs.Update时就出错,这是为什么??
解决方案 »
- Scanner.h(13) : error C2201: “GetDateFromScannerThread”: 必须有外部链接才可进行导出/导入
- 急!CRichEditCtrl怎么插入能点击打开网页的图片?
- CTreeCtrl 调用SelectItem(NULL)之后,切换窗口后,树呈灰色。。。
- ODBC SDK 的问题!!! 各位大哥帮帮忙啊...
- dll中对话框移动问题?
- 紧急求救,不胜感激!!
- 定义了一个Double类型的属性,在设置Default时,该设什么数据?
- VC++技术内幕第五版和第四版哪一个好,有什么区别
- 请问哪儿有股票软件的接口规范??
- 怎样查看当前机器上运行的所有应用程序(不是进程)?
- 好心人,请教ADO问题
- VC初学者,菜菜地问关于“基于对话框”的程序
CSession ss;
CCommand<CDynamicAccessor> rs; CoInitialize(NULL);
USES_CONVERSION; ds.Open();
BSTR buff;
ds.GetInitializationString(&buff, true); cout<<OLE2T(buff)<<endl;;
SysFreeString(buff);
ss.Open(ds); CDBPropSet* DBPropSet = new CDBPropSet(DBPROPSET_ROWSET);
DBPropSet->AddProperty(DBPROP_IRowsetUpdate, true);
DBPropSet->AddProperty(DBPROP_UPDATABILITY,
DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_DELETE | DBPROPVAL_UP_INSERT);
DBPropSet->AddProperty(DBPROP_CANSCROLLBACKWARDS, true);
DBPropSet->AddProperty(DBPROP_CANFETCHBACKWARDS, true); rs.Open(ss, "SELECT 姓名 FROM oletest", (DBPROPSET*)DBPropSet); for(DBORDINAL col = 1; col <= rs.GetColumnCount(); col++)
{
LPTSTR szBuff = OLE2T(rs.GetColumnName( col ));
cout<<szBuff<<'\t';
}
cout<<endl; HRESULT hr = rs.MoveNext();
while(SUCCEEDED(hr) && hr != DB_S_ENDOFROWSET)
{
DBSTATUS DBStatus;
DBTYPE DBType; rs.GetStatus( 1, &DBStatus);
rs.GetColumnType(1, &DBType); if(FAILED(DBStatus))
cout<<"FAILED";
else if( DBStatus == DBSTATUS_S_ISNULL )
cout<<"<<NULL>>";
else if( DBType == DBTYPE_WSTR || DBType == DBTYPE_STR)
{
LPWSTR buff = (LPWSTR)rs.GetValue(1);
CString pszData = CString(buff);
cout<<pszData; }
cout<<endl; hr = rs.MoveNext();
}
LPWSTR pwszName = (LPWSTR)rs.GetValue(1);
wcscpy(pwszName, L"uu");
//rs.SetLength(1,2);
rs.SetStatus(1, DBSTATUS_S_OK);
rs.Insert();
rs.Update();
///////////在这里就出错了,下面的就不用看了/////////////
rs.MoveFirst(); LPWSTR pwszData = (LPWSTR)rs.GetValue(1);
wcscpy(pwszData, L"hhh");
DBCOUNTITEM rt = 0;
rs.SetData();
rs.Update();
cout<<rt<<endl; rs.Close();
ss.Close();
ds.Close();
CoUninitialize();帮帮我啊...谢谢
如果在它的前面加了rs.ReleaseRows() rs.Update()的错误是DB_E_ERRORSOCCURED(发生错误)...晕啊!!!~~~ 有没有人知道这个怎么弄啊?