我有一个程序,可以从数据库中读取数据并将其显示在电子表格控件(devexpress)上。 我需要您的帮助,以使该程序可以更改button_click上的数据集,然后将其保存回数据库中。 谢谢
这是代码段
for row in right_table.find_all('tr'):
print(row)
这将绑定数据源
mentwall_DataDataSet ds = new mentwall_DataDataSet();
mentwall_DataDataSetTableAdapters.DATABASETableAdapter databaseAdapter = new mentwall_DataDataSetTableAdapters.DATABASETableAdapter();
databaseAdapter.Fill(ds.DATABASE);
dv = new DataView(ds.DATABASE);
mentwall_DataDataSet ds2 = new mentwall_DataDataSet();
mentwall_DataDataSetTableAdapters.RegsTableAdapter regsAdapter = new mentwall_DataDataSetTableAdapters.RegsTableAdapter();
regsAdapter.Fill(ds2.Regs);
dv2 = new DataView(ds2.Regs);
答案 0 :(得分:0)
我做的完全一样,一个应用程序在DevExpress网格控件(Windows窗体)中显示SQL表的内容,当我单击“保存”按钮时,所有更改(包括添加的新行或删除的行)都保存到SQL中服务器数据库,这是我的DAL类的代码片段,用于处理保存的数据库逻辑:
这里的要点是使用SqlCommandBuilder类,该类必须至少使用select命令初始化,然后所有其他命令都将自动生成,我已经编写了此代码> 5年前,并且我仍每天使用此应用程序。
public int UpdateSQLDataTable(string connectionString, string TableName, DataTable dtSource)
{
try
{
using (SqlConnection sConn = new SqlConnection(connectionString))
{
sConn.Open();
var transaction = sConn.BeginTransaction();
try
{
var command = sConn.CreateCommand();
command.Transaction = transaction;
command.CommandText = $"SELECT TOP 1 * FROM {TableName} WITH (NOLOCK)";
command.CommandType = CommandType.Text;
// timeoput of 5 minutes
command.CommandTimeout = 300;
SqlDataAdapter sAdp = new SqlDataAdapter(command);
SqlCommandBuilder sCMDB = new SqlCommandBuilder(sAdp);
int affectedRecords = sAdp.Update(dtSource);
transaction.Commit();
return affectedRecords;
}
catch (Exception /* exp */)
{
transaction.Rollback();
throw;
}
}
}
catch (Exception exc)
{
Logger logger = new Logger();
logger.Error(string.Format("connectionString: '{0}', TableName: '{1}'", connectionString, TableName), exc);
return int.MinValue;
}
}