現在VB.netにて開発を行っております。
ODBCConnectionを利用して接続後に利用するテーブルの
DataTable型へとColumnやDataTypeなどを取得したいです。
テーブルのカラム一覧を取得し追加したDataTable型のPrimaryKeyに
List(of DataColum)から値を代入を使用としています。
VB.net
1getSchema.PrimaryKey = getPrimaryKeylist(tablename).ToArray()
そこで下記エラーが発生します。
System.ArgumentException はユーザー コードによってハンドルされませんでした。
HResult=-2147024809
Message=列はテーブルに属していなければなりません。
下記コードです。
VB.net
1 Dim tablename as string 'Table名が入っています。 2 Dim getSchema as New DataTable 3 'DBの接続を行っています。接続成功したまたは接続済みの場合にTrueを返します。 4 If DBConnect() Then 5 'カラムの取得 6 Dim sql As String 7 sql = "Select * " & _ 8 "From INFORMATION_SCHEMA.COLUMNS " & _ 9 "WHERE TABLE_NAME = '" & tablename & "' " & _ 10 "Order by ORDINAL_POSITION " 11 'QueryExecuteは受け取ったQueryを実行して、結果をDataTableで返します。 12 Dim dtshema As DataTable = QueryExecuteReader(sql) 13 Dim col As DataColumn 14 For Each dtrow As DataRow In dtshema.Rows 15 col = New DataColumn 16 col.ColumnName = dtrow("COLUMN_NAME").ToString 17 Int32.TryParse(dtrow("CHARACTER_MAXIMUM_LENGTH").ToString, col.MaxLength) 18 getSchema.Columns.Add(col) 19 Next 20 'プライマリキーの取得 21 Dim getPrimaryKeylist as new List(of DataColumn) 22 23 sql = "select COLUMN_NAME from information_schema.constraint_column_usage " & _ 24 "where table_name = '" & tableName & "' and constraint_name like 'PK_%'" 25 'QueryExecuteは受け取ったQueryを実行して、結果をDataTableで返します。 26 Dim dtPK As DataTable = QueryExecuteReader(sql) 27 For Each rowPK As DataRow In dtPK.Rows 28 getPrimaryKeylist.Add(New DataColumn(rowPK("COLUMN_NAME").ToString)) 29 Next ' ここでエラー発生 30 getSchema.PrimaryKey = getPrimaryKeylist.ToArray() 31 Else 32 getSchema = Nothing 33 End If 34
解決方法や
そもそももっとよいやり方があるなど、教えていただけませんでしょうか。
どうぞよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー