Questo sembra piuttosto banale, ma ora mi sta frustrando.Verifica se il database esiste prima della creazione
Sto usando C# con SQL Server 2005 Express.
Sto usando il seguente codice. Voglio verificare se esiste un database prima di crearlo. Tuttavia, il numero intero restituito è -1 e questo è il modo in cui MSDN definisce cosa restituirà anche ExecuteNonQuery(). In questo momento, il database esiste ma restituisce ancora -1. Detto questo, come posso fare questo lavoro per ottenere il risultato desiderato?
private static void checkInventoryDatabaseExists(ref SqlConnection tmpConn, ref bool databaseExists)
{
string sqlCreateDBQuery;
try
{
tmpConn = new SqlConnection("server=(local)\\SQLEXPRESS;Trusted_Connection=yes");
sqlCreateDBQuery = "SELECT * FROM master.dbo.sysdatabases where name =
\'INVENTORY\'";
using (tmpConn)
{
tmpConn.Open();
tmpConn.ChangeDatabase("master");
using (SqlCommand sqlCmd = new SqlCommand(sqlCreateDBQuery, tmpConn))
{
int exists = sqlCmd.ExecuteNonQuery();
if (exists <= 0)
databaseExists = false;
else
databaseExists = true;
}
}
}
catch (Exception ex) { }
}
provarlo ora .. executescalar restituisce oggetto quindi devi eseguire il cast prima dell'assegnazione. –
Si genera un'eccezione di "INVENTORY Nome colonna non valido" " –
scusa, sì - il nome del database deve essere racchiuso tra virgolette singole - aggiornato la mia risposta –