我正在尝试在我的数据库中创建一个新表,但它无效。请参阅以下代码:
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个数据库?
答案 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());
}
连接字符串中的语法错误 尝试以下
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(...);