C# 使用SqliteDataAdapter更新表
在datagridview中更新视图时,我遇到了一些问题。My函数成功地从数据库中删除所选行,但DataAdapter未填充datatable dt。当添加行时,具有相同结构的函数可以完美地工作C# 使用SqliteDataAdapter更新表,c#,visual-studio,sqlite,datagridview,C#,Visual Studio,Sqlite,Datagridview,在datagridview中更新视图时,我遇到了一些问题。My函数成功地从数据库中删除所选行,但DataAdapter未填充datatable dt。当添加行时,具有相同结构的函数可以完美地工作 private string ConString; private SQLiteCommand cmd; DataTable dt = new DataTable(); SQLiteConnection sql_con; SQLiteDataAdapter DB
private string ConString;
private SQLiteCommand cmd;
DataTable dt = new DataTable();
SQLiteConnection sql_con;
SQLiteDataAdapter DB;
// Function to delete rows
public void DeleteRow(string value)
{
string sqlStatement = "DELETE FROM Trades WHERE ID = " + value;
try
{
sql_con = new SQLiteConnection(ConString);
sql_con.Open();
cmd = sql_con.CreateCommand();
cmd.CommandText = sqlStatement;
cmd.ExecuteNonQuery();
DB = new SQLiteDataAdapter();
dt.Clear();
DB.Fill(dt);
}
finally
{
sql_con.Close();
}
}
因为您的
DB
中没有任何数据。它没有任何SELECT
语句或其他任何语句。。您希望哪些数据准确地填充数据表?学习。这种类型的字符串连接对攻击是开放的。还可以使用using
语句自动处理连接、命令和适配器,而不是手动调用Close
或dispose
方法。为什么每次都重新创建DataAdapter?dataadapter的含义-它总是相同的。您只需为适配器指定更新、插入和删除命令。适配器的Update方法将为dt中具有适当状态的每一行调用这些命令。完全按照以下顺序:GUI中的事件更改DataTable或DataSet,DataAdapter将更改传输到数据库。