0

OleDB を使用して、拡張子が「.K$$」のテキスト ファイルからグリッドにデータをインポートしています。

コード例を次に示します。

FileInfo file = new FileInfo(filename);
string connectionString = "";
OleDbDataAdapter adapter;
OleDbConnection con;

connectionString = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + file.DirectoryName + ";Extended Properties=\"Text;Format=TabDelimited;\"";

con = new OleDbConnection(connectionString);
con.Open();
adapter = new OleDbDataAdapter(String.Format("SELECT * FROM {0} ", file.Name), con);

adapter.Fill(MyDataTable);

Fill メソッドを実行すると、例外がスローされます。FROM 句の何が問題になっていますか? ありがとう


編集:

OK、いくつかのテストの後、問題は「$」記号にあることがわかりました。多分それは予約されたシンボルですか?また、拡張子の名前を「.txt」に変更すると、ファイルはグリッドに読み込まれましたが、列が 1 つしかないため、行にタブがあることがわかりません。

もう 1 つの問題は、ファイル拡張子を ".txt" 以外 (たとえば ".tx") に変更すると、Fill メソッドが "更新できません。データベースまたはオブジェクトは読み取り専用です" という例外をスローすることです。

4

3 に答える 3

1

OK、example.K$$ を作成しようとしたところ、Visual Studio 2010 のサーバー エクスプローラーで指定されたのと同じプロバイダーを使用して接続しようとしました。これは認識されない形式です。

私はこれがうまくいくとは思わない。

別のプロバイダーまたは方法を介した接続を検討する必要がある場合があります。

私はあなたがこのリンクを見るべきだと思います:-

編集 :

http://www.codeproject.com/Articles/6737/Fill-a-DataSet-from-delimited-text-files

これにより、txt ファイルをデータブルに正しく読み込むことができます。

于 2012-09-10T09:53:18.190 に答える
0

ファイル名のパスが正しいかどうかを確認してみてください

于 2012-09-10T09:29:10.830 に答える
-1

ディレクトリにもファイル名にもスペースが含まれていないことを確認してください。その場合は、それらをエスケープ/引用する必要があります。

また、ファイル名に拡張子が含まれている場合は、句.で有効な文字ではないため、ファイル名を引用する必要があります。FROM試してみてくださいFROM [{0}](ただし、これは の正しい引用文字ではない可能性がありますOleDbDataAdapter)。

于 2012-09-10T09:35:52.193 に答える