[英]C# & MS Access - SQL for Create Table, Column and add values at the start of the app
我正在尝试使用 C# 和 MS Access 数据库开发一个项目,该项目有一个名为Employee
的表。 我在 MS Access 上创建了所有数据库、表、属性,但我想检查数据库是否存在并检查表是否存在,还检查属性是否存在并创建数据库、表并添加值如果缺少任何人。
所以我创建了一个方法并尝试检查这种情况。 但是,在我的代码中有一些方法可以从数据库中获取 datagridview 的值,如果我删除我的数据库文件,我会在 datagridview 中得到错误,或者任何这种类型的都找不到数据库。 我在最顶层调用了我的方法。
Table name --> Employee - columns (Name, Surname).
Second Table --> Department - column (Department_Name) This table has to come with two values; Engineering and Accountant.
调用方法检查:
public Form1()
{
checkDB();
InitializeComponent();
}
我检查数据库的代码:
static void checkDB()
{
try
{
OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source= Employee.accdb");
myConnection.Open();
OleDbCommand myCommand = new OleDbCommand();
myCommand.Connection = myConnection;
myCommand.CommandText = "CREATE DATABASE IF NOT EXIST [Employee] +
CREATE TABLE IF NOT EXIST 'Employee' [ID] Counter Primary Key,
[FirstName] Text, [LastName] Text + CREATE TABLE IF NOT EXIST 'Department'
[ID] Counter Primary Key, [Department_Name] Text + insert if not exist into
Department(Department_Name) values('Engineer , Accountant ') ";
// Added new lines to read it easily
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();
}
catch(OleDbException e)
{
// err.message
}
}
Access 数据库文件可能非常适合此操作,并且不需要任何购买的许可证。
最简单的方法是在项目中包含一个空的数据库文件。 然后,如果不存在,请将其复制到用户的文件夹并建立连接。
访问 SQL 不支持CREATE TABLE IF NOT EXISTS
所以我们需要自己检查表是否存在:
string tableName = "team";
DataTable dt = myConnection.GetSchema("Tables", new string[] { null, null, tableName });
if (dt.Rows.Count > 0)
{
Console.WriteLine("Table already exists.");
}
else
{
Console.WriteLine("We need to CREATE TABLE");
}
另外,正如对问题的评论中提到的,Access SQL 根本不支持CREATE DATABASE
,所以我们需要使用 ADOX
var myConnection = new OleDbConnection(connectionString);
try
{
myConnection.Open();
Console.WriteLine("Database already existed.");
}
catch
{
var cat = new ADOX.Catalog();
cat.Create(connectionString);
Console.WriteLine("Database created.");
myConnection.Open();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.