Cul*_*tes 2 c# sql sql-server sqlcommand information-schema
我想我几乎看到了与这个问题相关的每一页,最可能的答案是 检查SQL表是否存在 但是并不是真的理解它.这就是我得到的:
private void select_btn_Click(object sender, EventArgs e)
{
string theDate = dateTimePicker1.Value.ToString("dd-MM-yyyy");
SqlConnection SC = new SqlConnection("Data Source=ruudpc;Initial Catalog=leden;Integrated Security=True");
SqlCommand DateCheck = new SqlCommand("SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '" + theDate + "'");
}
Run Code Online (Sandbox Code Playgroud)
现在我想要DateCheck.ExecuteScalar()的返回值; 这可以告诉我它是否存在,可能很简单.
编辑
无论是sql注入部分,对于某些人来说这个问题是有帮助的,通常不好的做法是动态创建表,我建议你重新考虑你的ERD.只是说.
使用IF EXISTS T-SQL
private void select_btn_Click(object sender, EventArgs e)
{
string theDate = dateTimePicker1.Value.ToString("dd-MM-yyyy");
SqlConnection SC = new SqlConnection("Data Source=ruudpc;Initial Catalog=leden;Integrated Security=True");
string cmdText = @"IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME='" + theDate + "') SELECT 1 ELSE SELECT 0";
SC.Open();
SqlCommand DateCheck = new SqlCommand(cmdText, SC);
int x = Convert.ToInt32(DateCheck.ExecuteScalar());
if (x == 1)
MessageBox.Show("Table exists for date " + theDate);
else
MessageBox.Show("Table doesn't exist for date " + theDate);
SC.Close();
}
Run Code Online (Sandbox Code Playgroud)