Хранение таблиц SQL для использования в Visual Studio - PullRequest
0 голосов
/ 14 июня 2010

Я пытаюсь создать приложение Windows Form, которое обрабатывает данные из нескольких таблиц, хранящихся на сервере SQL.

  1. Как лучше всего хранить данные локально, пока приложение работает? У меня была предыдущая программа, которая модифицировала только одну таблицу и была настроена на использование таблицы данных. Однако, поскольку мне не обязательно просматривать все таблицы, я ищу другой способ хранения данных, полученных по запросу SELECT * FROM ....

  2. Лучше ли загружать таблицы, вносить изменения в приложение C #, а затем обновлять измененные таблицы в конце или просто выполнять все операции с базой данных, удаленно (извлекая таблицы каждый раз, когда они необходимы )

Ответы [ 2 ]

1 голос
/ 14 июня 2010

Вы можете взять одну таблицу за раз, используя ConnectionString, и назначить ее в DataTable. Затем вы можете вносить изменения в DataTable в любой форме. Когда вы закончите вносить изменения, вы можете зафиксировать изменения обратно в базу данных, используя DataAdapter.

Вот как получить таблицу:

DataTable table;
using (SqlDbConnection connection = new SqlDbConnection(connectionString))
            {
                connection.Open();
                using (SqlDbCommand command = new SqlDbCommand(tableName, connection))
                {
                    command.CommandType = CommandType.TableDirect;
                    SqlDbDataReader dr = command.ExecuteReader(CommandBehavior.CloseConnection);
                    table = new DataTable(tableName);
                    routeID.Load(dr);
                }
             }

Вот как зафиксировать таблицу после изменений, убедитесь, что присвоили свой DataTable для DataSet, чтобы получить изменения для фиксации:

DataSet dataSet = new DataSet();
dataSet.add(table);

using (var adapter = new SqlDbDataAdapter("SELECT * FROM " + tableName, connection))
            {
                using (var builder = new SqlDbCommandBuilder(adapter))
                {

                    adapter.Fill(dataSet, tableName);
                    using (DataSet newSet = dataSet.GetChanges(DataRowState.Added))
                    {
                        builder.QuotePrefix = "[";
                        builder.QuoteSuffix = "]";
                        adapter.InsertCommand = builder.GetInsertCommand();
                        adapter.Update(newSet, tableName);
                    }
                }
            }

Может быть несколько типов пропусков, я не скомпилировал, чтобы проверить ошибки. Удачи.

0 голосов
/ 14 июня 2010

Объект DataSet имеет методы, которые дают вам возможность манипулировать данными из нескольких таблиц в памяти, а затем сохранять эти изменения обратно в базу данных. Является ли это хорошей идеей, зависит от ваших требований и данных - есть ли несколько одновременных пользователей, как вам нужно обрабатывать конфликтующие обновления и т. Д. Я обычно предпочитаю немедленно вносить изменения в БД, но затем я обычно работаю в контекст веб-приложения.

...