- PR -

SqlDataAdapterからスキーマ情報のみDataSetへ格納

1
投稿者投稿内容
AOPP
ベテラン
会議室デビュー日: 2002/11/18
投稿数: 66
投稿日時: 2003-08-05 18:29
AOPPです。

SqlDataAdapterを利用して、データベースの追加・更新を行っています。
追加の場合、
DataSetへ追加を行う際に、前もってDataSetにスキーマ情報(型・テーブル名)
を設定して起きたいのですが、データベースを読み(SqlDataAdapter)DataSetを作成したいのですがよい方法が有ればアドバイスお願いします。

1.存在しないキーでFillする。(存在しないキーは、危険)
2.addなどで項目を生成する。(コード量が多くなる データベース変更の際、修正要)
3.データベースからデータセットオブジェクトを生成(xsd)しておく。
(データベース変更の際、修正要)

上記以外でなにかありますかね!!!

Valhalla
ベテラン
会議室デビュー日: 2002/09/03
投稿数: 53
投稿日時: 2003-08-05 18:44
4.FillSchemaメソッドを使う

#まだ試したことはないです
AOPP
ベテラン
会議室デビュー日: 2002/11/18
投稿数: 66
投稿日時: 2003-08-05 21:07
aoppです。

FillSchemaメソッドってDataSetのテーブル情報(スキーマ)をDataTable の配列型にコピー
する物だと思います。(勘違い?? データベース情報から取れるならよさそうです。)

Valhalla
ベテラン
会議室デビュー日: 2002/09/03
投稿数: 53
投稿日時: 2003-08-05 23:17
da.Fill(ds, "table_name");

の代わりに、

da.FillSchema(ds, SchemaType.Source, "table_name");

とかやるとうまくいきませんか?
AOPP
ベテラン
会議室デビュー日: 2002/11/18
投稿数: 66
投稿日時: 2003-08-05 23:43
aoppです

Valhallaさんお手数かけてすみませえん

SqlConnection a = new SqlConnection(".....");
SqlDataAdapter schemaDA = new SqlDataAdapter("SELECT * FROM aaaa WHERE * = *",a)
schemaDA.FillSchema(ds, SchemaType.Source, "aaaa");

ということですかね!!(効率よいSQL文何かないのかな--)

ちとやってみます。
AOPP
ベテラン
会議室デビュー日: 2002/11/18
投稿数: 66
投稿日時: 2003-08-06 00:07
AOPPです。

WriteXmlSchemaで、確認したとろ問題なさそうですね。(0件でスキーマも正しい感じ)
1点気のなるのは、SQL文の条件文は、実際SQLSERVSER上で動作するときに働いているのですかね!!!モニタするしかないのかな

Valhalla
ベテラン
会議室デビュー日: 2002/09/03
投稿数: 53
投稿日時: 2003-08-06 03:44
> 1点気のなるのは、SQL文の条件文は、実際SQLSERVSER上で動作するときに働いている> のですかね!!!モニタするしかないのかな

たしかにそうですね。「1.存在しないキーでFillする」と変わらないような
気がしてきました。

そういう意味では、INFORMATION_SCHEMA.TABLES(?)などでスキーマを取得して
「2.addなどで項目を生成する」しかないのでしょうか。ん〜
1

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