Не могу создать одну и ту же таблицу дважды в SQL Server - PullRequest
0 голосов
/ 23 февраля 2011

У меня есть приложение C # Windows Form.Я нажимаю кнопку, она должна создать таблицу и вставить значение (int).Я создаю исходную базу данных в виде базы данных службы (Добавить новый элемент> Данные> База данных службы).

Код кнопки (вывод следует за ним):

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.");
    }
}

ВЫХОД: 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.

, но на сервере все равно ничегоисследователь.

Ответы [ 3 ]

5 голосов
/ 23 февраля 2011

Исключение говорит вам точно, что происходит. Ваша таблица уже существует. Вы не можете создать это снова. Вам нужно удалить таблицу, если она уже существует.

0 голосов
/ 23 февраля 2011

Ничего не отображается в обозревателе сервера, хотя никаких дополнительных таблиц нет, даже если я закрою его и снова подключусь.

При каждом запуске вашей программы управление проектами Visual Studio автоматически развертывается (копирует эту базу данных) Файл базы данных .mdf в папке развертывания Debug \ Bin .Я думаю, что ваш код использует базу данных, которая находится в папке Debug \ Bin (которая не будет отображаться в обозревателе серверов), а Обозреватель серверов показывает базу данных (.mdf), которая находитсяв корне папки проекта, и она пуста.

0 голосов
/ 23 февраля 2011

Попробуйте указать свойство commandType в SqlCommand = CommandType.Text

Также убедитесь, что вы подключаетесь к одному и тому же экземпляру SQL. Вы можете получить свой код, остановив строку после того, как откроете соединение (потому что это когда вы знаете, что это работает) и отправившись искать имя сервера.

Обратите внимание, что вы можете иметь несколько экземпляров SQL на одном компьютере ... так что вы можете работать на нужном сервере (скажем, localhost) и при этом не иметь доступа к правильному экземпляру (скажем, SQLEXPRESS вместо MSSQLSERVER).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...