2011-02-23 38 views
0

我有一个C#Windows窗体应用程序。我推一个按钮,它应该创建一个表并插入一个值(int)。 我将初始数据库创建为服务数据库(添加新项目>数据>服务数据库)。无法在SQL Server中创建两次相同的表

该按钮的代码是(输出遵循其下方):

private void button1_Click(object sender, EventArgs e) 
{ 
    SqlConnection thisConnection = new SqlConnection(Properties.Settings.Default.Database1ConnectionString); 
    SqlCommand nonqueryCommand = thisConnection.CreateCommand(); 

    try 
    { 
     thisConnection.Open(); 

     nonqueryCommand.CommandText = "CREATE TABLE MyTable1 (intColumn int)"; 
     Console.WriteLine(nonqueryCommand.CommandText); 
     Console.WriteLine("Number of Rows Affected is: {0}", nonqueryCommand.ExecuteNonQuery()); 

     nonqueryCommand.CommandText = "INSERT INTO MyTable1 VALUES (99)"; 
     Console.WriteLine(nonqueryCommand.CommandText); 
     Console.WriteLine("Number of Rows Affected is: {0}", 
      nonqueryCommand.ExecuteNonQuery()); 
    } 
    catch (SqlException ex) 
    { 
     Console.WriteLine(ex.ToString()); 
    } 
    finally 
    { 
     thisConnection.Close(); // close connection 
     Console.WriteLine("Connection Closed."); 
    } 
} 

OUTPUT: CREATE TABLE MYTABLE1(intColumn INT) 受影响的行号是:-1 INSERT INTO MYTABLE1 VALUES (99) 受影响的行数是:1 连接已关闭。

服务器资源管理器上没有任何显示即使我关闭并重新连接,也没有附加表。

如果我按下按钮,使其发出相同的,我再次得到:在服务器资源管理器

System.Data.SqlClient.SqlException (0x80131904): There is already an object named 'MyTable1' in the database. 

,但仍然一无所获。

+1

有什么原因令您感到愉快? – 2011-02-23 01:30:22

回答

5

例外告诉你到底发生了什么事。你的表已经存在。您无法再创建它。如果表已经存在,您需要删除表。

+0

我认为他的抱怨是表格似乎不以某种方式存在(他无法用他的SQL客户端发现它)。 – 2011-02-24 00:07:08

+0

@有限:显然,他误解了这一点。 – 2011-02-24 00:18:42

-2

尝试spceifying的的SqlCommand = CommandType.Text

CommandType属性还要确保您连接到SQL的同一个实例。你可以通过在打开连接之后断开连接(因为它是在你知道它工作的时候)并寻找服务器名来获得你的代码。

请注意,您可以在一台计算机上安装多个SQL实例...因此您可以在正确的服务器(如localhost)上工作,但不能访问正确的实例(如SQLEXPRESS而不是MSSQLSERVER)。

+0

-1:这将如何帮助?第一次点击按钮时它正确执行。 – 2011-02-23 01:38:03

0

服务器浏览器上没有任何显示尽管没有附加表格,即使我关闭并重新连接。

当你执行程序时,Visual Studio的项目管理自动部署(复制数据库).MDF数据库文件在部署文件夹调试\ BIN。我觉得你的代码使用它位于调试\ BIN文件夹(这将在服务器资源管理器来未显示)和数据库服务器资源管理器显示了位于项目文件夹的根目录数据库(.MDF),它是空。

+0

那么你如何检查Databse在做什么? – Richard 2011-02-23 01:57:15

+0

@Richard:我从你的问题描述中猜测出来。请验证您的连接字符串,我确信您的app.config文件中的connectionString使用| DataDirectory |替代。 – adatapost 2011-02-23 02:15:30

+0

Data Source =。\ SQLEXPRESS; AttachDbFilename = | DataDirectory | \ WikiTest。mdf;集成安全性= True;用户实例= True – Richard 2011-02-23 23:54:28