📄 subject_30717.htm
字号:
<p>
序号:30717 发表者:zhouguosheng 发表日期:2003-02-25 20:11:56
<br>主题:用OLE DB打开SQL6.5表中带汉字内容会出乱码,而打开SQL2000不会???
<br>内容:#ifndef __DBOTGDZH_H_<BR>#define __DBOTGDZH_H_<BR><BR>class CdbotGDZHAccessor<BR>{<BR>public:<BR> TCHAR m_ZH[9];<BR> TCHAR m_XM[8];<BR> SHORT m_LB;<BR> TCHAR m_JYFL[9];<BR> <BR>BEGIN_COLUMN_MAP(CdbotGDZHAccessor)<BR> COLUMN_ENTRY(1, m_ZH)<BR> COLUMN_ENTRY(2, m_XM)<BR> COLUMN_ENTRY(3, m_LB)<BR> COLUMN_ENTRY(4, m_JYFL)<BR>END_COLUMN_MAP()<BR><BR>DEFINE_COMMAND(CdbotGDZHAccessor, _T(" \<BR> SELECT \<BR> ZH, \<BR> XM, \<BR> LB, \<BR> JYFL, \<BR> FROM dbo.ZHLL")) <BR><BR><BR> // You may wish to call this function if you are inserting a record and wish to<BR> // initialize all the fields, if you are not going to explicitly set all of them.<BR> void ClearRecord()<BR> {<BR> memset(this, 0, sizeof(*this));<BR> }<BR>};<BR><BR>class CdbotGDZH : public CCommand<CAccessor<CdbotGDZHAccessor> ><BR>{<BR>public:<BR> HRESULT Open()<BR> {<BR> HRESULT hr;<BR><BR> hr = OpenDataSource();<BR> if (FAILED(hr))<BR> return hr;<BR><BR> return OpenRowset();<BR> }<BR> HRESULT OpenDataSource()<BR> {<BR> HRESULT hr;<BR> CDataSource db;<BR> CDBPropSet dbinit(DBPROPSET_DBINIT);<BR><BR> dbinit.AddProperty(DBPROP_AUTH_PASSWORD, OLESTR("000000"));<BR> dbinit.AddProperty(DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO, false);<BR> dbinit.AddProperty(DBPROP_AUTH_USERID, OLESTR("sa"));<BR> dbinit.AddProperty(DBPROP_INIT_CATALOG, OLESTR("ZGS2000"));<BR> dbinit.AddProperty(DBPROP_INIT_DATASOURCE, OLESTR("zh"));<BR> dbinit.AddProperty(DBPROP_INIT_LCID, (long)2052);<BR> dbinit.AddProperty(DBPROP_INIT_PROMPT, (short)4);<BR> hr = db.Open(_T("SQLOLEDB.1"), &dbinit);<BR> if (FAILED(hr))<BR> return hr;<BR><BR> return m_session.Open(db);<BR> }<BR> HRESULT OpenRowset()<BR> {<BR> // Set properties for open<BR> CDBPropSet propset(DBPROPSET_ROWSET);<BR> propset.AddProperty(DBPROP_IRowsetChange, true);<BR> propset.AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_INSERT | DBPROPVAL_UP_DELETE);<BR><BR> return CCommand<CAccessor<CdbotGDZHAccessor> >::Open(m_session, NULL, &propset);<BR> }<BR> CSession m_session;<BR>};<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:lyw 回复日期:2003-02-26 12:38:36
<br>内容:不知你使用什么环境,MFC还是ATL?<BR>在打开记录集时先调用一下ClearRecord();<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:zhouguosheng 回复日期:2003-02-26 17:28:26
<br>内容:我是个VC初学者,请教MFC与ATL有什么不同?<BR>我上面的class ATL::CDataSource;class ATL::CSession;是ATL,<BR>为什么取汉字内容都为乱码。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:lyw 回复日期:2003-02-28 13:43:27
<br>内容:MFC与ATL有什么不同一时说不清楚<BR>如果是ATL,乱码的问题可能由于ASCII和UNICODE字符集的不同引起的,要用函数转换过的<BR>CdbotGDZH gdzhset;<BR>......<BR>USES_CONVERSION;<BR>sprintf(m_Name,"%s",W2A(gdzhset.m_XM));<BR>如果是MFC,在打开记录集时先调用一下ClearRecord();<BR><BR><BR><BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -