SQL检查表是否存在于C#中,如果不存在则创建

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.只是说.

Ste*_*eve 9

使用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)