Как получить доступ к базе данных на C#

По сути, я хотел бы краткое объяснение того, как я могу получить доступ к базе данных SQL в коде C#. Я так понимаю, что требуется соединение и команда, но что происходит? Думаю, я прошу кого-нибудь немного демистифицировать этот процесс. Спасибо.

Для ясности, в моем случае я занимаюсь веб-приложениями, электронной коммерцией. Это все базы данных ASP.NET, C# и SQL.

Я собираюсь закрыть эту тему. Это немного общее, и я собираюсь опубликовать еще несколько острых и учебных вопросов и ответов по этой теме.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
6
0
3 416
10
Перейти к ответу Данный вопрос помечен как решенный

Ответы 10

темы для просмотра:

  1. Основы ADO.NET
  2. LINQ to SQL
  3. Поставщики управляемых баз данных

Здесь у MSDN есть довольно хорошая запись:

http://msdn.microsoft.com/en-us/library/s7ee2dwt(VS.71).aspx

Вам следует взглянуть на средство чтения данных для простых операторов выбора. Пример со страницы MSDN:

private static void ReadOrderData(string connectionString)
{
    string queryString = 
        "SELECT OrderID, CustomerID FROM dbo.Orders;";
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        SqlCommand command = new SqlCommand(
            queryString, connection);
        connection.Open();
        SqlDataReader reader = command.ExecuteReader();
        try
        {
            while (reader.Read())
            {
                Console.WriteLine(String.Format("{0}, {1}",
                    reader[0], reader[1]));
            }
        }
        finally
        {
            // Always call Close when done reading.
            reader.Close();
        }
    }
}

Сначала он создает объект SqlConnection, а затем создает объект SqlCommand, который содержит фактический выбор, который вы собираетесь сделать, и ссылку на только что созданное соединение. Затем он открывает соединение и на следующей строке выполняет ваши операторы и возвращает объект SqlDataReader.

Затем в цикле while он выводит значения из первой строки в считывателе. Каждый раз, когда вызывается "reader.Read ()", читатель будет содержать новую строку.

Затем читатель закрывается, и поскольку мы выходим из секрета «using», соединение также закрывается.


Обновлено: Если вы ищете информацию о выборе / обновлении данных в ASP.NET, 4GuysFromRolla имеет очень хороший Многокомпонентные серии в элементах управления источниками данных ASP.NET 2.0

EDIT2: как указывали другие, если вы используете более новую версию .NET, я бы рекомендовал изучить LINQ. Введение, образцы и описание можно найти на эта страница MSDN.

Было бы лучше использовать оператор using вокруг команды и соединения, если он привязан к текущему методу.

Eric Schoonover 18.09.2008 10:40

Я согласен, но MSDN, похоже, не относится к этому в статьях для начинающих (из которых я скопировал и вставил это), поэтому я подумал, что это будет нормально.

Espo 18.09.2008 10:42

Я могу видеть логику образцов, которые не придерживаются «лучших практик», чтобы не путать вещи. Но IMHO удаление соединений с базой данных настолько фундаментально (особенно в веб-приложениях - а OP говорит об ASP.NET), что его всегда следует включать. Продолжайте, обновите свой пример :)

Joe 18.09.2008 15:04

Изучение этого старого метода при отсутствии Linq кажется бессмысленным. Зачем изучать старую технологию, когда существует более быстрый, простой и мощный метод?

naspinski 18.09.2008 15:23

Если это веб-приложение, вот несколько хороших ресурсов для начала работы с доступом к данным в .NET:

http://weblogs.asp.net/scottgu/archive/2007/04/14/working-with-data-in-asp-net-2-0.aspx

Ответ принят как подходящий

Читается как вопрос для новичков. Это требует видеодемонстраций для начинающих.

http://www.asp.net/learn/data-videos/

Они ориентированы на ASP.NET, но обращают внимание на аспекты базы данных.

Вопрос для начинающих, поэтому тег. Спасибо за ссылку! Мне нравятся красивые движущиеся картинки!

MrBoJangles 18.09.2008 10:40

Для подключения / выполнения операций на базе данных SQL-сервера:

using System.Data;
using System.Data.SqlClient;

string connString = "Data Source=...";
SqlConnection conn = new SqlConnection(connString); // you can also use ConnectionStringBuilder
connection.Open();

string sql = "..."; // your SQL query
SqlCommand command = new SqlCommand(sql, conn);

// if you're interested in reading from a database use one of the following methods

// method 1
SqlDataReader reader = command.ExecuteReader();

while (reader.Read()) {
    object someValue = reader.GetValue(0); // GetValue takes one parameter -- the column index
}

// make sure you close the reader when you're done
reader.Close();

// method 2
DataTable table;
SqlDataAdapter adapter = new SqlDataAdapter(command);
adapter.Fill(table);

// then work with the table as you would normally

// when you're done
connection.Close();

Большинство других серверов баз данных, таких как MySQL и PostgreSQL, имеют аналогичные интерфейсы для подключения и управления.

Если то, что вы ищете, представляет собой простое в использовании руководство, вам следует перейти на веб-сайт www.ASP.net.

Вот ссылка на стартовую страницу видео: http://www.asp.net/learn/videos/video-49.aspx

Вот видео, если вы хотите его скачать: скачать видео

а вот ссылка на проект C# из видео: скачать проект

Удачи.

Я бы также рекомендовал использовать DataSets. Они действительно просты в использовании, всего несколько щелчков мышью, без написания кода и достаточно хороши для небольших приложений.

Если у вас есть Visual Studio 2008, я бы рекомендовал пропустить ADO.NET и сразу перейти к LINQ to SQL.

Старый ADO.Net (sqlConnection и т. д.) - динозавр с появлением LINQ. LINQ требует .Net 3.5, но обратно совместим со всеми .Net 2.0+, Visual Studio 2005 и т. д.

Начать работу с linq до смешного просто.

  • Добавьте новый элемент в свой проект, файл linq-to-sql, он будет помещен в вашу папку App_Code (в этом примере мы назовем его example.dbml)
  • из проводника сервера перетащите таблицу из базы данных в dbml (в этом примере таблица будет называться Предметы)
  • сохраните файл dbml

Теперь вы построили несколько классов. Вы создали класс exampleDataContext, который является вашим инициализатором linq, и вы создали класс элемент, который является классом для объектов в таблице Предметы. Все это делается автоматически, и вам не нужно об этом беспокоиться. Теперь предположим, что я хочу получить запись с itemID равным 3, это все, что мне нужно сделать:

exampleDataContext db = new exampleDataContext(); // initializes your linq-to-sql
item item_I_want = (from i in db.items where i.itemID == 3 select i).First(); // using the 'item' class your dbml made

И это все, что нужно. Теперь у вас есть новый элемент с именем item_I_want ... теперь, если вам нужна некоторая информация из элемент, вы просто вызываете его так:

int intID = item_I_want.itemID;
string itemName = item_I_want.name;

Linq - это простой в использовании очень! И это только верхушка айсберга.

Нет необходимости изучать устаревший ADO, когда в вашем распоряжении более мощный и простой инструмент :)

@J D OConal в основном прав, но вам нужно убедиться, что вы избавились от своих подключений:

string connString = "Data Source=...";
string sql = "..."; // your SQL query

//this using block
using( SqlConnection conn = new SqlConnection(connString) )
using( SqlCommand command = new SqlCommand(sql, conn) )
{
    connection.Open();

    // if you're interested in reading from a database use one of the following methods

    // method 1
    SqlDataReader reader = command.ExecuteReader();

    while (reader.Read()) {
        object someValue = reader.GetValue(0); // GetValue takes one parameter -- the column index
    }

    // make sure you close the reader when you're done
    reader.Close();

    // method 2
    DataTable table;
    SqlDataAdapter adapter = new SqlDataAdapter(command);
    adapter.Fill(table);

    // then work with the table as you would normally

    // when you're done
    connection.Close();
}

Другие вопросы по теме