为什么我不能在C#中的数据库中创建表?

时间:2015-07-10 03:59:32

标签: c# sql-server database

我正在尝试在我的数据库中创建一个新表,但它无效。请参阅以下代码:

public static void creerJoueur(string nom)
{
        bool ok = true;
        string connexionString = @"DataSource=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Rubis.mdf;Integrated Security=True";

        using (SqlConnection connexion = new SqlConnection(connexionString))
        {
            connexion.Open();
            string query = "Create table " + nom +  " (noSemaine int primary key, montant int)";
            SqlCommand commande = new SqlCommand(query, connexion);

            try
            {
                ok = commande.ExecuteNonQuery() == 1;
            }
            catch (Exception)
            {
                ok = false;
            }
        }
    }

我看不出我的错误。在调试中,我的程序没有进入我的catch部分,因此没有错误。我只是看不到我的新桌子。 commande.ExecuteNonQuery()返回-1。请帮帮我。

更新:代码很好但是在运行程序几分钟后出现了表格。任何解决方案??

更新2:我创建了一个名为taxeRubis的新数据库。在Visual Studio中,我在执行代码后没有看到任何表格。如果我进入sql server,有2个名为taxeRubis的数据库不在同一个位置:gyazo.com/5c05765b9b8f4ee8312329edf01e157e我的表名为Bodhis,另一个没有。为什么我现在有2个数据库?

3 个答案:

答案 0 :(得分:1)

你错过了#34;("在LocalDB前面。即

connexionString = @"DataSource=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Rubis.mdf;Integrated Security=True";

答案 1 :(得分:0)

执行查询后是否检查过数据库?看看桌子会在那里。 ExecuteNonQuery()正在返回-1,因为它不会影响任何行。它只是创建一个表。所以你的查询正在运行。

  

我在测试环境中测试了相同的内容。我得-1,但是   表正在数据库中创建

    string nom = "test123";
    string query = "Create table " + nom + " (noSemaine int primary key, montant int)";
    SqlCommand cmd = new SqlCommand(query, conn);
    try
   {
     int ii = cmd.ExecuteNonQuery();
     MessageBox.Show(ii.ToString());
    }

value after executenonquery

table

连接字符串中的语法错误 尝试以下

connexionString = @"DataSource=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|
\Rubis.mdf;Integrated Security=True";

同时在提供用户输入时避免字符串连接。它可能导致SQL Injection 你可以按如下所示进行SQL查询

db.Execute(string.Format("CREATE TABLE {0} (noSemaine int primary key, montant int)", nom));

答案 2 :(得分:0)

您的连接字符串错误。 尝试:

打开您的dataBase属性 - >从那里复制连接字符串,然后将其传递给新的SqlConnection(...);