在我的demo中目前查询XSJL.db数据文件中的信息没有问题,就是在做插入\更新操作时报"未处理的system.data.odbc.odbcexction类型的异常出现在system.data.dll中"的错误.
我的代码是:
连接数据库语句connStr=@"Driver={Microsoft Paradox Driver (*.db )};DriverID=538;Fil=Paradox 5.X;DefaultDir="+SourcePath+";Dbq="+SourcePath+";CollatingSequence=ASCII;";
public bool insertInto()
{
string QuerySql=@"insert into XSJL (JYBH,SKTNO,DEPTID,SPCODE,LSDJ,XSSL,XSJE,ZKJE,JYSJ,SKFS01,SKFS02,SKFS03,SHSKT,SHJLBH,FLAG) "
+" values('24','808','01020307','000043',40.00,6,40.00,0,'2011-07-08 18:41:21.00',40.00,0,0,0,'2',0) ";
conn.Open ();
OdbcCommand Command=new OdbcCommand (QuerySql,conn);
int returnValue=Command.ExecuteNonQuery ();
conn.Close ();
if(returnValue>0)
{
return true;
}
else
{
return false;
}
}
public bool updateInto()
{
string QuerySql=@"update XSJL set LSDJ=20000.00 where JYBH='23'";
conn.Open ();
OdbcCommand Command=new OdbcCommand (QuerySql,conn);
int returnValue=Command.ExecuteNonQuery ();
conn.Close ();
if(returnValue>0)
{
return true;
}
else
{
return false;
}
}在线等待解决....

解决方案 »

  1.   

    熟悉问一下:XSJL.db是什么类型的数据库?
      

  2.   

    刚好我整理过访问paradox数据库的问题,给你贴出来:
      

  3.   

        Ado访问PARADOX数据库1、PARADOX数据库结构
    PARADOX数据库是Boland以前在DELPHI下利用BDE进行操作的桌面数据库,目前已经很少使用,以致ADO都不提供它的引擎了(也害得我吃了不少苦头)。PARADOX数据库本身以独立的表存在的,一个表就可以看成是一个库,或者也可以说是一个文件夹就是一个库,文件夹里的PARADOX数据表就是该库的各个表。PARADOX数据表的扩展名是db,此外还有一些其他的文件类型,作为数据表的辅助,但用ADO对其进行处理时,使用*.DB的文件就已经足够。
    2、连接到PARADOX数据库
    前面已经提到过,ADO没有PARADOX数据库的引擎,要用ADO访问PARADOX数据库,我试过三种方式来进行操作:用Microsoft.Jet.OLEDB.4.0来替代PARADOX数据库引擎;用仿ODBC的连接语句操作;建立ODBC数据源,然后用ADO来访问ODBC。还有一种是用VC来封装BDE   API,在ww.codeproject.com上可以找到相关的内容。对于最后一种方法,用他的例子却实效果不错,但真正移直到我的程序上时却费了很大劲,并且效果不好,主要是我对于BDE操作方式太不理解了,花了好多时间,最终以放弃告终。
    下面我就说明用前三种方式来进行连接到数据库的操作。其实这三种方式都没有太大的差别,只是连接语句不同而已。
    (1)用Microsoft.Jet.OLEDB.4.0引擎。这种方式访问时跟连接到其他数据库没什么差别:
    _ConnectionPtr   m_pDb;
    CString   connectsource;
    connectsource.Format(L "Provider=Microsoft.Jet.OLEDB.4.0;   Data   Source=%s\\shared;   Extended   Properties=Paradox   5.x;   Persist   Security   Info=False ",strCTRSRoute);
    try     //检查数据库连接是否正常
    {
        m_pDb.CreateInstance(__uuidof(Connection));
        m_pDb-> ConnectionTimeout=10;
        m_pDb-> CommandTimeout=20;
        if(m_pDb-> State!=adStateClosed)
        {
          m_pDb-> Close();
          m_pDb-> Open((_bstr_t)connectsource, " ", " ",adModeUnknown);      
        }
        else      
        {
          hr=m_pDb-> Open((_bstr_t)connectsource, " ", " ",adModeUnknown);
        }
    }
    catch(_com_error   e)   //捕捉异常
    {
        LogAdoErrorImport(m_pDb);    
    }
    说明:connectsource变量保存了连接信息,由此我们可以看到,所谓数据库的数据源,仅指是连接到PARADOX数据表放的位置Data   Source=%s\\shared,“shared”为一文件夹名,在该文件夹下面有PARADOX数据表,而不是具体指向哪一个数据表。同理,在下面的两种方式中,数据源也仅指向包含PARADOX数据表的文件夹。除了异常处理外在后面要详细说明外,其他的操作与其他ADO操作没有差别,在此不再冗续。 
      

  4.   

    (2)用仿ODBC连接操作。ODBC还提供了PARADOX数据引擎,因此,我们可以通过ODBC来访问PARADOX数据表。本方法就是把建立DSN的连接信息在ADO的连接语句中完全地写出来。
    connectsource.Format(L "CollatingSequence=ASCII;DBQ=%s\\shared; "   \
        L "DefaultDir=%s\\shared;Driver={Microsoft   Paradox   Driver   (*.db   )}; "   \
        L "DriverId=538;FIL=Paradox   5.X; "   \
        L "MaxBufferSize=2048;MaxScanRows=8;PageTimeout=600; "   \
        L "ParadoxNetPath=%s\\shared;ParadoxNetStyle=4.x;ParadoxUserName=admin; "   \
        L "SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes; ",strCTRSRoute,strCTRSRoute,strCTRSRoute);
    说明:上面所有信息均可在注册表中的ODBC对应的键下面或都文件DSN中直接找到。我们现在操作的PARADOX数据表,一般是Paradox   4.X或Paradox   5.X。对于Paradox   7.X好像也无能为力。好在我用的数据库的版本也没那么高,呵呵。其他操作同第一种方式。
    (3)建立ODBC数据源,用ADO访问ODBC数据源。这种方式是第二种的翻版,但需要动态地或手工添加ODBC数据源。
    CString   connectsource= "Provider=MSDASQL.1;Persist   Security   Info=False;Data   Source=Projdir ";
    其中Data   Source=Projdir,就指出了数据源为一个ODBC的DSN。 
      

  5.   

    “对于我的目前现在还不能用的”,不明白你说的什么意思?
    你的代码是在哪一步出现异常?建议你加上try{}catch(Execption ex)语句,先定位是哪一句出错!
      

  6.   

    错误是这样的:
    执行插入方法时:int returnValue=Command.ExecuteNonQuery ();{"ERROR [HY000] [Microsoft][ODBC Paradox Driver] 操作必须使用一个可更新的查询。" }
      

  7.   

    网上有一个你类似的问题,你看看:
    http://topic.csdn.net/u/20071217/08/dcb323f9-e051-4ec3-8d16-59548657e506.html