- PR -

テキストファイルからのDBの更新について

1
投稿者投稿内容
てろ
会議室デビュー日: 2003/05/12
投稿数: 14
投稿日時: 2003-07-25 13:52
VB.NETでWEBアプリの開発をしていまして、
テキストファイルを読み込み、DBに登録する時に
DBのテーブルのデザインで設定した長さで区切って入れていきたいのですが
どのようにすればいいのでしょうか?

現状はとりあえず下のソースで動かしているのですが
テーブルのデザインの変更があっても手直しをしなくていいようにしたいのです
よろしくお願いします。

For i = 0 To len - 1
dr = ds.TEST.NewRow
'画面のデータをDataRowに格納する
dr("A") = TEXT.Substring(i, 4)
dr("B") = TEXT.Substring(i + 4, 5)
dr("C") = TEXT.Substring(i + 9, 3)
dr("D") = TEXT.Substring(i + 12, 3)
dr("E") = i
'作成した行をデータセットに追加する
ds.TEST.Rows.Add(dr)
i = i + 16
Next
SqlDataAdapter1.Update(ds)

なな
ぬし
会議室デビュー日: 2003/06/22
投稿数: 659
お住まい・勤務地: 愛知県
投稿日時: 2003-07-25 17:42
> DBのテーブルのデザインで設定した長さ

こちらの取得方法を知りたいということでしょうか?
DBのテーブルのデザインとは、テーブルの列幅という理解でいいのでしょうか?
てろ
会議室デビュー日: 2003/05/12
投稿数: 14
投稿日時: 2003-07-28 13:10
返答ありがとうございます。
>こちらの取得方法を知りたいということでしょうか?

そのとおりです。よろしくお願いします。

>DBのテーブルのデザインとは、テーブルの列幅という理解でいいのでしょうか?

テーブルのデザインというのは設定した文字数のことです。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-07-28 18:42
こんにちは。

 DataAdapterでFillしてDataTableを作成してやれば、DataColumnが設定されていると思います。そいつを参照してやれば如何でしょうか?(未確認)

 Oracleであれば、DESCRIBE TableNameでテーブル情報が取得できます。この結果をDataReaderで読み込むようにすれば如何でしょう?
なな
ぬし
会議室デビュー日: 2003/06/22
投稿数: 659
お住まい・勤務地: 愛知県
投稿日時: 2003-07-28 19:58
> Oracleであれば、DESCRIBE TableNameでテーブル情報が取得できます。

SQL*Plusコマンドなので、アプリケーションから発行できなかったような...
DBA_TAB_COLUMNS で得ることができます。

# あくまで、Oracleの場合です。
mei
大ベテラン
会議室デビュー日: 2003/04/08
投稿数: 114
投稿日時: 2003-07-28 20:57
こんばんは、meiです。

DataAdapterのFillSchemaを使うのはどうでしょうか?
コード:
	OdbcDataAdapter da = new OdbcDataAdapter(
"select * from ...", conn);
	DataSet ds = new DataSet();
	da.FillSchema(ds, SchemaType.Mapped);
	foreach (DataColumn c in ds.Tables[0].Columns) {
		Console.WriteLine("{0}, {1}, {2}", 
			c.ColumnName, c.DataType, c.MaxLength);
	}



ただし、数値型の場合はMaxLengthが-1になって帰ってくるので、
アプリケーションとしての最大長を決めておく必要があります。
てろ
会議室デビュー日: 2003/05/12
投稿数: 14
投稿日時: 2003-07-29 09:57
返答ありがとうございます。

DBがSQLサーバーだということを記載するのを忘れていまして
meiさんの方法を解析してやってみたのですがどうもうまくいきませんでした。
大変申し訳ないのですがSQLサーバーでの方法を教えていただけたらと思います。
本当にすみません。
mei
大ベテラン
会議室デビュー日: 2003/04/08
投稿数: 114
投稿日時: 2003-07-29 22:01
引用:

てろさんの書き込み (2003-07-29 09:57) より:
DBがSQLサーバーだということを記載するのを忘れていまして
meiさんの方法を解析してやってみたのですがどうもうまくいきませんでした。
大変申し訳ないのですがSQLサーバーでの方法を教えていただけたらと思います。



Connectionオブジェクトはデータベースに接続済みでしょうか?
SQLサーバーは使ってないので試せないのですが、
サンプルをSystem.Data.SqlClient名前空間のクラスに置き換えても駄目ですか?
1

スキルアップ/キャリアアップ(JOB@IT)