存储SQL表以在visual studio中使用

时间:2010-06-14 16:29:30

标签: c# visual-studio-2008

我正在尝试创建一个Windows窗体应用程序,它可以处理存储在SQL服务器上的多个表中的数据。

  1. 在应用程序运行时,本地存储数据的最佳方法是什么?我有一个以前的程序只修改了一个表,并设置为使用datagridview。但是,由于我不一定要查看所有表,我正在寻找另一种方法来存储SELECT * FROM ...查询检索到的数据。

  2. 最好是加载表,在C#应用程序中进行更改,然后在最后更新修改后的表,或者只是远程执行数据库上的所有操作(每次需要时检索表) )?

2 个答案:

答案 0 :(得分:1)

您可以使用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);
                    }
                }
            }

可能有一些错过类型,我没有编译来检查错误。祝你好运。

答案 1 :(得分:0)

DataSet对象具有一些方法,使您能够处理内存中多个表的数据,然后将这些更改保存回数据库。这是一个好主意取决于您的要求和数据 - 是否有多个并发用户,您如何处理冲突的更新等等。我通常更喜欢立即将更改写回数据库,但是,我通常在网络应用环境。