データベースが存在するかどうかを確認するために以下のコードを使用していますが、ExecuteNonQuery
は常に-1を返します。SQL Server 2008 R2のmaster.sys.databasesビューをc#から照会できません
私はmaster.sys.databases
ビューを見てきましたし、それがPOS
SqlConnection tmpConn = new SqlConnection("Data Source=localhost\\SQLEXPRESS;Initial Catalog=master;Integrated Security=True");
sqlCheckDBQuery = "SELECT * FROM master.sys.databases where name = \'aspnetdb\'";
using (tmpConn)
{
try
{
tmpConn.Open();
tmpConn.ChangeDatabase("master");
}
catch (Exception)
{
MessageBox.Show("SQLServer Express Database is either not installed or not running!", "Database Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.Exit();
}
using (SqlCommand sqlCmd = new SqlCommand(sqlCheckDBQuery, tmpConn))
{
int exists = sqlCmd.ExecuteNonQuery();
if (exists <= 0)
databaseExists = false;
else
databaseExists = true;
}
}
は魅力的に機能しましたが、なぜSqlDataReaderが行を返さないのか不思議です(私はExecuteReaderで試しました) –