0

ハードコードされたパスにある DBF データベース ファイルにアクセスしていますが、フォルダ名に ex--BSTR-VSD,BSTR~VSD の特殊文字が含まれており、名前を変更できません。

したがって、odbc接続をodbにしてから、クエリをodb.commandText = select * from PATH(特殊文字を含むフォルダー名を含むハードコードされたパス)に入れると、エラーが発生します

例:

System.Data.Odbc.OdbcCommand oCmd = oConn.CreateCommand(); oCmd.CommandText = "SELECT * FROM "+ Pathname + " where DATE_Y >=110 and DATE_M >= " + From_Month + " and DATE_D>=" + From_Day + " and DATE_Y <=110 and DATE_M <= " + To_Month + " DATE_D<=" + To_Day + " ";

dt_Dbf.Load(oCmd.ExecuteReader());

および例外:: エラー [42000] [Microsoft][ODBC dBase Driver] FROM 句の構文エラー。

4

2 に答える 2

0

パラメータ化されたクエリを使用しないのはなぜですか?OdbcParameterクラスを使用できます。

MSDN:パディングの末尾のスペースを含め、文字列の全長に一致します。

        System.Data.Odbc.OdbcCommand oCmd = oConn.CreateCommand();
        oCmd.CommandText = "SELECT * FROM  @pathname where DATE_Y >=110 and DATE_M >= @from_Month and DATE_D>= @from_Day and DATE_Y <=110 and DATE_M <= @to_Month and DATE_D<= @to_Day";
        oCmd.Parameters.Add(new OdbcParameter("@pathname", Pathname));
        oCmd.Parameters.Add(new OdbcParameter("@from_Month", From_Month));
        oCmd.Parameters.Add(new OdbcParameter("@to_Month", To_Month));
        oCmd.Parameters.Add(new OdbcParameter("@from_Day", From_Day));
        oCmd.Parameters.Add(new OdbcParameter("@to_Day", To_Day));
于 2010-12-19T16:37:56.230 に答える
0

ブラケットで囲む

SELECT * 
  FROM ["+ Pathname + "]
 where DATE_Y >=110 
   and DATE_M >= " + From_Month + " 
   and DATE_D>=" + From_Day + " 
   and DATE_Y <=110 
   and DATE_M <= " + To_Month + "
   and DATE_D<=" + To_Day + " "

betweem StartDate と EndDate などを使用してこれをクリーンアップすることもできます

于 2010-12-19T09:25:15.073 に答える