发信人: mendy.bbs@bbs.nju.edu.cn (孟迪), 信区: cnprogram
标  题: VC ODBC FAQ
发信站: nju_bbs (Sun Apr 19 13:52:16 1998)
转信站: Lilac!ustcnews!nju_bbs

2m发信人:m TMN (派生类)
2m信  区:m RAD
2m标  题:m VC ODBC FAQ
2m发信站:m '3m紫金飞鸿m' (Wed Apr  8 08:19:04 1998) , 5m站内信件m

[返回首页] [分类讨论区] [全部讨论区]

有关本文∶ 
    本文收集了本版有关Visual C++中有关ODBC编程方面的有关问题,内容参见概
览。 

苗扬 于1996.8.23 

======================================================================= 

概览∶ 
1.  用一个CRecordset类,有动态访问不同的DataSource的方法吗? 
2. ODBC中的乱码? 
3. 如何解决"Invalid precision Value"? 

======================================================================= 
发信人: hey (吟风), 信区: Visual 
标  题: ODBC的问题 
        我在用VISUAL C++1.5做ODBC,有一个问题, 
        就是用一个CRecordset类,有动态访问不同的DataSource的方法吗? 

====> 发信人: tsai.bbs@bbs.ncic1.ac.cn (小菜), 信区: Program 
好象没有吧,先有DATA SOURCE, 后有RECORDSET,这是MFC数据库类库的机制决定
的。 
就好象先登录进数据库后打开TABLE一样的道理。 
                                                                           
     
====> HH_MOLL(苗扬) 
    VC1.5我没有试过,但VC4.0可以实现访问不同Data Source。 
先在ClassWizard中Create一个新类,该类的基类为CRecordSource 
这样VC就会提示你输入Data Source。再为新创建的类生成适当的View即可。 
    当然,用一个类是不行的。 
---------------------------------------------------------------------- 
发信人: seasky@SMTH (zk), 信区: Program 
标  题: 求教:使用VC4。0的ODBC的问题。 

我在使用VC4。0的ODBC对FOXPRO 的DBF文件进行操作时,发现 
从DBF文件读出的中文内容显示出来的是乱码,CSTAR2。0已启动 
在WIN95(英文版〕环境下。 

====> 发信人: Jeikul@SMTH (Seal), 信区: Program 
you can try to use other .DBF driver instead of foxpro driver 
such dBaseIII driver for ODBC. 
-------------------------------------------------------------------------------

--- 
发信人: Cjsh@SMTH (朔漠), 信区: Program 
标  题: 请问有关VC4.0对数据库进行操作的问题。 

我在用VC++4.0做数据库增加新记录时遇到如下问题,请各位网友帮忙. 

我的ODBC driver是foxpro2.5,事先我做了一个包括三个域:strname, 
studentid,gradyear的数据库,是在forprow2.5 for windows下做的. 
然后我定义了一个与该数据库相连的名为CDataSet1的CRecordSet的 
继承类,通过对话框类来访问该类的一个对象.但总是出现一个"Invalid 
precision Value"的错误.如果将数据库的字段换为整数,则可以正常 
操作,我不知道是什么原因,是不是因为在增加字符串时对CString类 
的有特殊要求.但我在使用VC++4.0提供的例子Enroll所带的数据库进 
行插入新记录的操作时却又能正常完成插入. 

附部分程序段: 
CAddRecord::CAddRecord(CWnd* pParent /*=NULL*/) 
        : CDialog(CAddRecord::IDD, pParent) 

        //{{AFX_DATA_INIT(CAddRecord) 
        m_GradYear = _T(""); 
        m_Name = _T(""); 
        m_StudentID = _T(""); 
        //}}AFX_DATA_INIT 

        . 
        . 
        . 
void CAddRecord::OnOK() 

        CDataSet1 rsStudent( NULL ); 
        if(rsStudent.Open()){} 
        rsStudent.AddNew( ); 
        m_GradYear = rsStudent.m_GRADYEAR; 
        m_Name = rsStudent.m_STRNAME; 
        m_StudentID = rsStudent.m_STUDENTID; 
        rsStudent.SetFieldNull(&(rsStudent.m_STUDENTID), FALSE); 
        UpdateData(TRUE); 
        rsStudent.m_GRADYEAR=m_GradYear; 
        rsStudent.m_STRNAME=m_Name; 
        rsStudent.m_STUDENTID=m_StudentID; 

        if( !rsStudent.Update( ) )     { 
                AfxMessageBox( "Record not added; no field values were 
set." ); 
        } 
        CDialog::OnOK(); 

          UpdateData(TRUE); 
>          rsStudent.m_GRADYEAR=m_GradYear; 
>          rsStudent.m_STRNAME=m_Name; 
>          rsStudent.m_STUDENTID=m_StudentID; 
>  
>          if( !rsStudent.Update( ) ) 
>          { 
>                  AfxMessageBox( "Record not added; no field values were 
set." 
>  ); 
>  
>          } 
>          CDialog::OnOK(); 
>  } 

====> 发信人: zhangdh@SMTH (Tree), 信区: Program 
>  void CAddRecord::OnOK() 
>  { 
>          CDataSet1 rsStudent( NULL ); 
>          if(rsStudent.Open()){} 
>          rsStudent.AddNew( ); 
>          m_GradYear = rsStudent.m_GRADYEAR; 
>          m_Name = rsStudent.m_STRNAME; 
>          m_StudentID = rsStudent.m_STUDENTID; 
//  上面三句干舍? 
//   删了试试 
//改进建议: 
//为什么不直接把dialog的输入Window与dataset的field对应. 
-------------------------------------------------------------------------------

---- 

                         [返回首页] [分类讨论区] [全部讨论区]

--
m;31m※ 来源:·紫金飞鸿 bbs.njupt.edu.cn·[FROM: pc05.info.njupt]m

--
※ 来源:.南大小百合信息交换站 bbs.nju.edu.cn.[FROM: a507yjh.nju.edu]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.556毫秒