[C# 2005] Stranissima anomalia creazione db

lunedì 21 maggio 2007 - 15.44

Shadow Profilo | Junior Member

Carissimi,
sicuramente sto sbagliando io qualcosa.

Voglio fare in modo che al primo avvio la mia win app in C# 2005 crei il database, se non già presente. Allora ho creato il mio file script di creazione (che funziona, tant'è che eseguendolo da SSMS si crea tutto, database e tutti gli oggetti, tabelle ecc). Se però lo faccio eseguire dal mio software - il cui frammento di codice che lo crea vi posto sotto - sentite cosa accade: si crea il database ma senza oggetti dentro. La cosa stranissima è che 'esplorando' SSMS ho scoperto che gli oggetti si creano nel database Master!!!! Qualcuno di voi sa spiegarmi l'arcanissimo? Mi pare davvero strano. L'unica certezza è che sicuramente avrò commesso io un errore. Grazie a tutti e buna serata,

Shadow

CODICE

//Questa classe fa semplicemente eseguire un generico comando sql

public static int SqlComEx(string cnSqlComEx, string cmdSqlComEx, CommandType typSqlComEx, SqlParameter[] parSqlComEx)
{
int retSqlComEx = 0;
SqlConnection cnMySqlComEx;
cnMySqlComEx = new SqlConnection(cnSqlComEx);
cnMySqlComEx.Open();
SqlCommand cmdMySqlComEx = new SqlCommand();
cmdMySqlComEx.Connection = cnMySqlComEx;
cmdMySqlComEx.CommandText = cmdSqlComEx;
cmdMySqlComEx.CommandType = typSqlComEx;
if (parSqlComEx != null)
{
cmdMySqlComEx.Parameters.AddRange(parSqlComEx);
}
retSqlComEx = cmdMySqlComEx.ExecuteNonQuery();
if (cnMySqlComEx != null)
{
if (cnMySqlComEx.State == ConnectionState.Open)
{
cnMySqlComEx.Close();
}
}
return (retSqlComEx);
}


// Quest'altra invece legge lo script e lo esegue con la classe di sopra
// Tenta infatti di connettersi al database DbVeterinario, e se non lo
// trova provvede alla sua creazione

public void DatabaseCreator()
{
string dbCrCn = "Data Source=.;Initial Catalog=master;Integrated Security=True";
string dbCrRw = File.ReadAllText("dbVeterinario.sql");
string [] dbCrCmd = dbCrRw.Split(new string [] {"GO","Go","gO","go"},StringSplitOptions.RemoveEmptyEntries);
SqlConnection dbExMyCn;
dbExMyCn = new SqlConnection("Data Source=.;Initial Catalog=DbVeterinario;Integrated Security=True");
try
{
dbExMyCn.Open();
}
catch
{
for (int dbCrIndex = 0; dbCrIndex < dbCrCmd.Length; dbCrIndex++)
{
SqlComEx(dbCrCn, dbCrCmd[dbCrIndex], CommandType.Text, null);
}
}
}

Shadow
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5