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





темы для просмотра:
Здесь у 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.
Я согласен, но MSDN, похоже, не относится к этому в статьях для начинающих (из которых я скопировал и вставил это), поэтому я подумал, что это будет нормально.
Я могу видеть логику образцов, которые не придерживаются «лучших практик», чтобы не путать вещи. Но IMHO удаление соединений с базой данных настолько фундаментально (особенно в веб-приложениях - а OP говорит об ASP.NET), что его всегда следует включать. Продолжайте, обновите свой пример :)
Изучение этого старого метода при отсутствии Linq кажется бессмысленным. Зачем изучать старую технологию, когда существует более быстрый, простой и мощный метод?
Если это веб-приложение, вот несколько хороших ресурсов для начала работы с доступом к данным в .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, но обращают внимание на аспекты базы данных.
Вопрос для начинающих, поэтому тег. Спасибо за ссылку! Мне нравятся красивые движущиеся картинки!
Для подключения / выполнения операций на базе данных 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 до смешного просто.
Теперь вы построили несколько классов. Вы создали класс 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();
}
Было бы лучше использовать оператор using вокруг команды и соединения, если он привязан к текущему методу.