C#にてAccDBファイルのデータを扱うコードを書いています。
SQL構文にてデータテーブルを作成しました。
CREATE TABLE [名簿] ([INDEX] INT IDENTITY(1,1) PRIMARY KEY ,NUMBER VARCHAR(10) NOT NULL ,[氏名] VARCHAR(10) NOT NULL ,[入所年月日] DATE );
作成されたデータテーブルから,主キー(PRIMARY KEY)が設定されたフィールドを確認したいのですが、
下記のコードで主キー(PRIMARY KEY)が設定されたフィールドを取得出来ません。
public bool GetKeyDataField(DataTable data) { DataColumn[] keycolumn = data.PrimaryKey; foreach(DataColumn dataColumn in keycolumn) { Console.WriteLine(dataColumn.ColumnName); } }
参照
https://docs.microsoft.com/ja-jp/dotnet/api/system.data.datatable.primarykey?view=net-6.0
SQL構文にて別のフィールドにもPRIMARY KEYを設定しようとすると、
すでに主キーが設定されている旨のエラーが出ますので、DataTableの作成には問題無いと思います。
上記の方法に問題があるのか、他の方法があるのか、教えて頂けないでしょうか。
宜しくお願い致します。
データベース?は"Microsoft.ACE.OLEDB.12.0"を使用しています。
AccDBファイルの作成
ADOX.Catalog cat = new Catalog(); cat.Create(DBSource); OleDbConnection connection = new OleDbConnection(Builder.ConnectionString); DBSourceの内容 "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = C:\Users\xxxx\OneDrive\共有\DataBase\test2.accdb" コード
SQL実行クラス
protected
1 { 2 try 3 { 4 //connection.Open(); 5 System.Data.OleDb.OleDbCommand command = connection.CreateCommand(); 6 command.CommandText = queryString; 7 command.CommandTimeout = 30; 8 command.ExecuteNonQuery(); 9 command.Dispose(); 10 return true; 11 } 12 catch (Exception ex) 13 { 14 returnMessage = ex.Message; 15 Log.Write(returnMessage + queryString); 16 connection.Close(); 17 return false; 18 } 19 } 20コード
回答2件
あなたの回答
tips
プレビュー