MS Accessデータベーステーブルをプログラムでチェックする方法はありますか?テーブルは、それが賢明な他のエラーが返されますが存在するかどうMS Accessデータベーステーブルが存在しない場合はそれを確認してください
8
A
答えて
7
は、単純に次のコードを実行し、それは新しいものを作成します。
try
{
OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + frmMain.strFilePath + "\\ConfigStructure.mdb");
myConnection.Open();
OleDbCommand myCommand = new OleDbCommand();
myCommand.Connection = myConnection;
myCommand.CommandText = "CREATE TABLE <yourtable name>(<columns>)";
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();
}
catch(OleDbException e)
{
if(e.ErrorCode == 3010 || e.ErrorCode == 3012)
// if error then table exist do processing as required
}
表がすでに存在する場合、これらのエラーコードが返される - すべてのためcheck hereを。
12
特定のテーブルをチェックするためにテーブル名を反復することができます。テーブル名を取得するには、以下のコードを参照してください。
string connectionstring = "Your connection string";
string[] restrictionValues = new string[4]{null,null,null,"TABLE"};
OleDbConnection oleDbCon = new OleDbConnection(connectionString);
List<string> tableNames = new List<string>();
try
{
oleDbCon.Open();
DataTable schemaInformation = oleDbCon.GetSchema("Tables", restrictionValues);
foreach (DataRow row in schemaInformation.Rows)
{
tableNames.Add(row.ItemArray[2].ToString());
}
}
finally
{
oleDbCon.Close();
}
1
完全性期すために、私はしばらくは戻って私がTableExists() function within Accessをアップコーディングの4種類の方法を掲示することを指摘します。 MSysObjectsでSQL SELECTを実行するバージョンは外部からアクセスできますが、一部のコンテキストでは、Jet/ACEシステムテーブルへのアクセスが許可されていないため、セキュリティエラーが発生する可能性があります。
8
表は、あなたがこのようたDbConnectionを拡張することができますが存在するかどうかを確認するには、次の
public static class DbConnectionExtensions
{
public static bool TableExists(this DbConnection conn, string table)
{
conn.open();
var exists = conn.GetSchema("Tables", new string[4] { null, null, table, "TABLE" }).Rows.Count > 0;
conn.close();
return exists;
}
}
その後、あなたはOleDbConnectionオブジェクト、SQLiteConnectionまたはSqlConnectionオブジェクトなどの任意の派生クラスでTableExistsを呼び出すことができます。
1
これを行う簡単な方法は、単にエラーをキャッチするよりもエレガント
public bool CheckTableExistance(string TableName)
{
// Variable to return that defines if the table exists or not.
bool TableExists = false;
// Try the database logic
try
{
// Make the Database Connection
ConnectAt();
// Get the datatable information
DataTable dt = _cnn.GetSchema("Tables");
// Loop throw the rows in the datatable
foreach (DataRow row in dt.Rows)
{
// If we have a table name match, make our return true
// and break the looop
if (row.ItemArray[2].ToString() == TableName)
{
TableExists = true;
break;
}
}
//close database connections!
Disconnect();
return TableExists;
}
catch (Exception e)
{
// Handle your ERRORS!
return false;
}
}
関連する問題
- 1. 存在しない場合は、テーブル名を確認してください
- 2. 存在しない場合、エラーなしで項目が存在するか確認してください。
- 3. Rails:password_confirmationが指定されている場合、パスワードが存在することを確認してください。
- 4. データベースがまだ存在しない場合は作成してください
- 5. SQL更新が存在する場合は、存在しない場合は挿入してください。
- 6. gitにコードが存在していないか確認してください。
- 7. 保存されていない、データベースに存在しない電子メールフィールドを確認してください。
- 8. キューが存在するか確認してください。
- 9. SSRSパラメータが存在するか確認してください
- 10. リダイレクトURLが存在するか確認してください。
- 11. ディレクトリが存在しない場合は作成してください
- 12. 接尾辞が存在しない場合は追加してください。
- 13. インデックスが存在しない場合は作成してください
- 14. JSTL:プロパティが存在しないか確認してください
- 15. データベースにテーブルが存在し、モデルに存在しないことを確認してください
- 16. コアデータにオブジェクトの存在を確認してください
- 17. 複数のパラメータの存在を確認してください
- 18. HTML内にIDの存在を確認してください
- 19. YAMLキーの存在を確認してください
- 20. 存在しない場合はデータを挿入してください
- 21. System DSNを確認し、存在しない場合はSystem DSNを作成してください(iSeries Access ODBC Driver)
- 22. ブラウザが開いている場合はWebdriverで確認してください
- 23. UITextFieldが空でない場合、ライブを確認してください。
- 24. Delphi - ADOを使用してAccess 2003 DBにLINKEDテーブルが存在するか確認してください
- 25. MYSQLデータベースに存在しない場合は挿入してください
- 26. テーブルが存在するかどうかを確認し、存在しない場合は作成してください... iOS/SQLite
- 27. スクリプトが既に読み込まれているか確認してください。そうでない場合は、非同期にロードしてください。
- 28. Java - セッションの確認とリダイレクトが存在しない場合
- 29. ファイルが存在していないか確認してください。作成していない場合は、JavaScriptファイル
- 30. 一致するレコードが存在する場合、クエリは「はい」を返し、そうでない場合は「いいえ」を返します。 SQL/MS Accessの
1、です。 'catch {throw; } '、しかし:それはNOOPです。 – Heinzi