Как получить доступ к базе данных в C # - PullRequest
6 голосов
/ 18 сентября 2008

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

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

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

Ответы [ 10 ]

10 голосов
/ 18 сентября 2008

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 (), читатель будет содержать новую строку.

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


РЕДАКТИРОВАТЬ: Если вы ищете информацию о выборе / обновлении данных в ASP.NET, 4GuysFromRolla имеет очень хороший Multipart Series на элементах управления источниками данных ASP.NET 2.0

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

4 голосов
/ 18 сентября 2008

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

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

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

Теперь вы построили несколько классов. Вы создали класс exampleDataContext , который является вашим инициализатором linq, и создали класс item , который является классом для объектов в таблице items . Все это делается автоматически, и вам не нужно беспокоиться об этом. Теперь скажите, что я хочу получить запись с 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 ... теперь, если вам нужна информация из item , вы просто называете ее так:

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

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

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

3 голосов
/ 18 сентября 2008

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

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

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

1 голос
/ 18 сентября 2008

@ 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();
}
1 голос
/ 18 сентября 2008

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

1 голос
/ 18 сентября 2008

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

1 голос
/ 18 сентября 2008

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

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

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

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

Удачи.

1 голос
/ 18 сентября 2008

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

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, имеют аналогичные интерфейсы для подключения и манипулирования.

1 голос
/ 18 сентября 2008

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

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

1 голос
/ 18 сентября 2008

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

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