Esto parece bastante trivial, pero ahora me está frustrando.Compruebe si existe una base de datos antes de crear
Estoy usando C# con SQL Server 2005 Express.
Estoy usando el siguiente código. Quiero verificar si existe una base de datos antes de crearla. Sin embargo, el número entero devuelto es -1 y así es como MSDN define qué devolverá ExecuteNonQuery(). En este momento, la base de datos existe, pero todavía devuelve -1. Habiendo dicho eso, ¿cómo puedo hacer que esto funcione para obtener el resultado deseado?
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) { }
}
intentándolo ahora ... executescalar devuelve el objeto, por lo que debe realizar el reparto antes de la asignación. –
Arroja una excepción de "Nombre de columna inválido 'INVENTARIO'" –
lo siento, sí - el nombre de la base de datos debe estar entre comillas simples - actualicé mi respuesta –