テーブルが存在するかどうかを確認するメソッドを作成しようとしています。私はデータベースを介して一貫性を維持するためにusingステートメントを使用しようとしています。コマンドが存在するかどうかを確認する
public void checkTableExists()
{
connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\keith_000\Documents\ZuriRubberDressDB.mdf;Integrated Security=True;Connect Timeout=30";
string tblnm = "BasicHours";
string str = "SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = " + tblnm + ");";
SqlDataReader myReader = null;
int count = 0;
try
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand command = new SqlCommand(str, connection))
{
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
MessageBox.Show("The count is " + count);
myReader = command.ExecuteReader();
while (myReader.Read())
{
count++;
}
myReader.Close();
MessageBox.Show("Table Exists!");
MessageBox.Show("The count is " + count);
}
connection.Close();
}
}
}
catch (SqlException ex)
{
MessageBox.Show("Sql issue");
}
catch (Exception ex)
{
MessageBox.Show("Major issue");
}
if (count > 0)
{
MessageBox.Show("Table exists");
}
else
{
MessageBox.Show("Table doesn't exists");
}
}
tryブロックにヒットしたときに例外をスローします。それはSqlException
ブロックをキャッチします。
これは私がデータベースと再びやりとりすることを学んでいるところです。その解決方法は良いでしょうが、もっと重要なのは、コードを改善する方法をどこで知る必要があるのかを簡単に説明します。
おかげ
キース
TABLE_NAMEは文字列フィールドです。変数を一重引用符で囲む必要がありますが、パラメータをよく使用してください。 – Steve
そのようなSQLクエリを連結しないでください。 (tblnm = "BasicHours; TRUNCATE TABLE [BasicHours];"代わりにParameterized SqlCommandオブジェクトを使用してください。 – WraithNath
あなたはどんな例外を取得していますか? –