Создать файл базы данных (.sdf), если не существует? - PullRequest
4 голосов
/ 01 апреля 2012

Мне просто интересно узнать об этом;

Я сделал простую визуальную программу на C # с локальной базой данных (SQL CE) (файл dB.sdf).

Допустим, пользователь удаляетФайл dB.sdf и попробуйте открыть программу exe - ничего не происходит (файл exe запускается, но закрывается снова).

Какова обычно практика здесь?Это то, что программа просто не запускается или она заставляет программу создавать файл базы данных, если он не существует?

Если это последний, как это делается?

Ответы [ 2 ]

8 голосов
/ 01 апреля 2012

Второй подход более разумен, поскольку ваша программа полезна, если она зависит от удаляемой базы данных.

string connStr = "Data Source = DBName.sdf; Password = DBPassword";  

if (!File.Exists("DBName.sdf")){

try  {     
SqlCeEngine engine = new SqlCeEngine(connStr);  
engine.CreateDatabase();  

SqlCeConnection conn = new SqlCeConnection(connStr);     
conn.Open();      

SqlCeCommand cmd = conn.CreateCommand();     
cmd.CommandText = "CREATE TABLE TableName(Col1 int, Col2 varchar(20))";     
cmd.ExecuteNonQuery(); 

} 
catch (SQLException ex){
    // Log the exception
} 
finally  {     
conn.Close(); 
}
} 
0 голосов
/ 25 апреля 2016
                    string fileName = txtEditFolderPath.Text + "\\" + txtEditDatabaseName.Text + ".sdf";
                     if (File.Exists(fileName))
                     {
                       MessageBox.Show("Database with this name already existed at this location !", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     }
                     else
                     {
                         string connectionString;
                         string password = "123";

                         connectionString = string.Format(
                           "DataSource=\"{0}\"; Password='{1}'", fileName, password);
                         SqlCeEngine en = new SqlCeEngine(connectionString);
                         en.CreateDatabase();
                     }
...