Я делаю модуль .NET как часть моих исследований. Я только начал, с лектора, который как бы не смог дать мне наиболее прочную основу с .NET, так что извините за глупость.
Я делаю довольно простое и универсальное приложение на основе базы данных. Я использую C # и обращаюсь к базе данных Microsoft Access 2007.
Я поместил вещи с базой данных в свой собственный класс с методами, просто выделяющими OleDbDataAdapters, которые я использую для фиксации. Я передаю любые методы, которые предварительно запрашивают объект DataSet из основной программы, где я храню данные (несколько таблиц в БД).
Я создал очень общий частный метод, который я использую для выполнения запросов SQL SELECT, и у меня есть несколько открытых методов, которые обертывают этот метод для получения products. orders.etc (это универсальная розничная база данных).
Общий метод использует отдельный метод Connect для фактического установления соединения, и он выглядит следующим образом:
private static OleDbConnection Connect()
{
OleDbConnection conn = new OleDbConnection(
@"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Temp\db.accdb");
return conn;
}
Общий метод выглядит следующим образом:
private static OleDbDataAdapter GenericSelectQuery(
DataSet ds, string namedTable, String selectString)
{
OleDbCommand oleCommand = new OleDbCommand();
OleDbConnection conn = Connect();
oleCommand.CommandText = selectString;
oleCommand.Connection = conn;
oleCommand.CommandType = CommandType.Text;
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = oleCommand;
adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
adapter.Fill(ds, namedTable);
return adapter;
}
Методы-обёртки просто передают набор данных, полученный из основной программы, именованная строка - это имя таблицы в наборе данных, и вы передаете запрос, который хотите сделать.
Неважно, какой запрос я ему даю (даже что-то простое, например SELECT * FROM TableName), я все равно получаю исключение OleDbException, заявляя, что в предложении FROM запроса была ошибка en. Я только что прибегнул к созданию запросов с помощью Access, но все еще бесполезно. Очевидно, что с моим кодом что-то не так, что на самом деле меня не удивит.
Вот некоторые методы-оболочки, которые я использую.
public static OleDbDataAdapter GetOrderLines(DataSet ds)
{
OleDbDataAdapter adapter = GenericSelectQuery(
ds, "orderlines", "SELECT OrderLine.* FROM OrderLine;");
return adapter;
}
Они все выглядят одинаково, меняется только SQL.