繁体   English   中英

C# & MS Access - SQL 用于在应用程序开始时创建表、列和添加值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM