ODBC 和 OLEDB 2种连接我都试过了,都会出现格式错误,但是SQL语句用DbTour试过的,可以正常查出来数据。
请高手帮我看下是怎么回事~
贴出代码:private void Handle(DateTime date)
        {
            //SQLCreator sqlcreator=new SQLCreator();
            OLEDBSQLCreator sqlcreator = new OLEDBSQLCreator();
            string datestr = date.Month.ToString() + @"/" + date.Day.ToString() + @"/" + date.Year.ToString();
            string sqlstr = @"select b." + "\"Date\"" + ",b." + "\"Time\"" + ",b.OrderNo,b.Price,a.CAmount,a.VAmount,a.AAmount,a.MAmount,a.QAmount,a.IAmount,a.DAmount,a.UAmount,a.YAmount,a.OAmount from paybkup.DB a left join ordbkup.DB b on a.OrderNo=b.OrderNo left join itembkup.DB c on a.OrderNo =c.OrderNo where b." + "\"Date\"" + "='" + datestr + "'" + " and c.MenuNo not in ('013001','013002','013003') and b.Price!=0";
            StringBuilder sb = new StringBuilder();
   
            using (IDataReader dr =sqlcreator.ExcuteDataReader(sqlstr,configurator.DataBasePath,CommandType.Text))
            {
             while (dr.Read())
            {               
               sb.Append(configurator.StoreCode+"\r");
               sb.Append(configurator.TillID + "\r");
               sb.Append(dr[0].ToString() + "\r");
               sb.Append(dr[1].ToString() + "\r");
               sb.Append("S" + dr[2].ToString().Substring(3) + "\r");
               sb.Append(configurator.Plu + "\r");
               sb.Append("\r");
               sb.Append(dr[4].ToString() + "\r");
               sb.Append(dr[5].ToString() + "\r");
               sb.Append("0" + "\r");
               sb.Append((int.Parse(dr[6].ToString()) + int.Parse(dr[7].ToString()) + int.Parse(dr[8].ToString()) + int.Parse(dr[9].ToString()) + int.Parse(dr[10].ToString()) + int.Parse(dr[11].ToString()) + int.Parse(dr[12].ToString()) + int.Parse(dr[13].ToString())).ToString() + "\r");
               sb.Append("0" + "\r");
               sb.Append(dr[3].ToString()+System.Environment.NewLine);
            }

解决方案 »

  1.   

    其他的代码都是正确的, 我用Select * 试过的,正常通过~
      

  2.   

    参考代码string ConnectionString = @" Driver={Microsoft Paradox Driver (*.db )};DriverID=538;Fil=Paradox 5.X;DefaultDir=C:Paradox;Dbq=C:Paradox;CollatingSequence=ASCII;PWD=; " using (System.Data.Odbc.OdbcConnection conn = new System.Data.Odbc.OdbcConnection(ConnectionString))
    {
    conn.Open();
    using (System.Data.Odbc.OdbcCommand command = conn.CreateCommand())
    {
    command.CommandText = " update test set aa=14 " ;
    command.ExecuteNonQuery();command.CommandText = " select * from test " ;
    Console.WriteLine(command.ExecuteScalar());
    }
      

  3.   

    Select * 的情况是正常的,可以正常执行,但是我的数据库比较大,执行大概需要20多分钟,不大实际了。
    加入Conditions之后就报错了,这个SQL查询字符我直接拷贝到 DBTour中就可以直接执行的。
      

  4.   


     private bool CreateConnection(string DataBasePath)
            {
                bool Flags=false;
                string connStr = @"Driver={Microsoft Paradox Driver (*.db )};DriverID=538;Fil=Paradox 5.X;DefaultDir="+DataBasePath+";Dbq="+DataBasePath+";CollatingSequence=ASCII;PWD=;";
                //string connStr = @"Driver={Microsoft Paradox Driver (*.db )};DriverID=538;Fil=Paradox 5.X;DefaultDir="+DataBasePath+";Dbq="+DataBasePath+";CollatingSequence=ASCII;PWD=;";
                //string connStr = @"Provider=MSDASQL;Persist Security Info=False;Mode=Read;Extended Properties='DSN=Paradox;DBQ=C:\myDb;DefaultDir="+DataBasePath+";DriverId=538;FIL=Paradox 7.X;MaxBufferSize=2048;PageTimeout=600;';Initial Catalog="+DataBasePath+";";             
                conn.ConnectionString = connStr;
                try
                {
                    conn.Open();
                    Flags = true;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                return Flags;
            }
            /
    这是现在用的连接方式,是不是驱动不支持该SQL查询啊。
      

  5.   

    连接字符串有问题,换成:"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\\DbDir; Extended Properties=Paradox 5.x; Persist Security Info=False"PARADOX数据库是Boland以前在DELPHI下利用BDE进行操作的桌面数据库,目前已经很少使用,以致ADO都不提供它的引擎了(也害得我吃了不少苦头)。PARADOX数据库本身以独立的表存在的,一个表就可以看成是一个库,或者也可以说是一个文件夹就是一个库,文件夹里的PARADOX数据表就是该库的各个表。PARADOX数据表的扩展名是db,此外还有一些其他的文件类型,作为数据表的辅助,但用ADO对其进行处理时,使用*.DB的文件就已经足够。