【发布时间】:2017-03-18 03:21:06
【问题描述】:
我正在尝试编写一种方法来检查表是否存在。我正在尝试使用 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 是一个字符串字段。您需要在变量周围加上单引号,但最好使用参数
-
请不要像这样连接 SQL 查询。 (tblnm = "BasicHours; TRUNCATE TABLE [BasicHours];" 改用参数化 SqlCommand 对象。
-
你遇到了什么异常?
标签: c# sql-server