Правильный способ подключения и запроса к базе данных SQL Server Express - PullRequest
6 голосов
/ 19 февраля 2012

Мне нужен пример кода C # (консольного приложения), который подключается к базе данных SQL Server Express и вставляет несколько переменных в таблицу «ноутбуки»

  • SQL Server Express равен @ localhost
  • имя пользователя - база данных
  • , а пароль - база данных тестов

Как правильно это сделать?

1 Ответ

12 голосов
/ 19 февраля 2012

Basic ADO.NET 101:

  • установить соединение
  • установить команду, чтобы что-то сделать
  • выполнить эту команду

Шаг 1: настройка соединения

Вам необходимо знать строку подключения к вашей базе данных. Проверьте http://www.connectionstrings.com для тонны примеров.

В вашем случае вы говорите, что это локальный экземпляр SQL Server Express - но, к сожалению, вы не упомянули, как называется ваша база данных ..... ваша строка подключения будет выглядеть примерно так:

server=(local)\SQLEXPRESS;database=YourDatabaseName;user id=database;pwd=testdatabase

Шаг 2: настройка команды

Вы можете иметь различные команды - чтобы выбрать данные, удалить их или вставить данные. Что бы вы ни делали - я бы рекомендовал всегда использовать параметризованные запросы, чтобы избежать внедрения SQL.

Итак, ваш код будет выглядеть примерно так:

string connectionString = "server=(local)\SQLEXPRESS;database=YourDatabaseName;user id=database;pwd=testdatabase";

string insertStmt = "INSERT INTO dbo.Laptops(Name, Model, ScreenSize) " + 
                    "VALUES(@Name, @Model, @Screensize)";

using(SqlConnection conn = new SqlConnection(connectionString))
using(SqlCommand cmd = new SqlCommand(insertStmt, conn))
{
    // set up the command's parameters
    cmd.Parameters.Add("@Name", SqlDbType.VarChar, 100).Value = "ASUS SX30";
    cmd.Parameters.Add("@Model", SqlDbType.VarChar, 50).Value = "Ultralight";
    cmd.Parameters.Add("@Screensize", SqlDbType.Int).Value = 15;

    // open connection, execute command, close connection
    conn.Open();
    int result = cmd.ExecuteNonQuery();
    conn.Close();
}
...