我的数据库有三个表,启动应用程序时会创建三个视图。创建表的代码是:
我的主要表“用户”:
CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , name VARCHAR(100), surname VARCHAR(100), ... id_membership_name integer, id_activity integer,... FOREIGN KEY (id_membership_name) REFERENCES membership_name(membership_id),FOREIGN KEY (id_activity integer) REFERENCES membership_activity(activity_id) );
另外两张桌子: membership_name
CREATE TABLE IF NOT EXISTS membership_name(membership_id integer,membership_name varchar(200));
membership_activity
CREATE TABLE IF NOT EXISTS membership_activity(activity_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, activity_name varchar(200));
主要观点是:
CREATE VIEW IF NOT EXISTS user_details AS SELECT users.name, users.surname ... membership_name.membership_name,membership_activity.activity_name... FROM
LEFT OUTER JOIN membership_name ON (users.id_membership_name = membership_name.membership_id)
LEFT OUTER JOIN membership_activity ON (users.id_activity = membership_activity.activity_id)
其他视图只需从表中选择所有内容。 *我缩短了我的代码,因为有更多的数据,这是更多 视觉可读。
现在我的代码以这种方式工作。我为每个SQLiteCommand
创建Query
并执行它。要填写DataGrid
,我只需填写DataTable
。
DataTable dataTable = new DataTable();
dataAdapter.Fill(dataTable);
this.GridView1.ItemsSource = dataTable.AsDataView();
要将数据插入我的表格,我已经制作了基本的INSERT query
。哪个工作正常。现在我的问题是创建UPDATE
命令。我需要这样做,以便当我双击一个单元格时,它允许编辑,按ENTER键后将其保存到数据库。
我的XAML列完全相同,只是其他标题名称和绑定。
<DataGridTextColumn Header="Name" Width="*" Binding="{Binding Name, Mode = TwoWay}"></DataGridTextColumn>
答案 0 :(得分:0)
好的,我已经解决了这个......
我使SQLiteCommand
成为一个简单的SQL查询,我从TextBoxes
获取所有值,并在行具有该ID的位置更新它们。
/*get id of values from comboboxes*/
int membership_name = int.Parse(membership_name_box.SelectedValue.ToString());
int id_activity = int.Parse(id_activity_box.SelectedValue.ToString());
这是UPDATE查询:
UPDATE user SET name=@name,surname=@surname ,/*a lot more data*/ id_membership_name=@id_membership_name,id_activity=@id_activity WHERE id = @id;
所以基本上这是整个更新...
SQLiteCommand cm = new
SQLiteCommand(Properties.Resources.update_datagrid, connection);
cm.Parameters.AddWithValue("@id", id);
cm.Parameters.AddWithValue("@name", name_box.Text);
cm.Parameters.AddWithValue("@surname", surname_box.Text);
//more parameters
//also more parameters
//again the same
cm.Parameters.AddWithValue("@id_membership_name", membership_name);
cm.Parameters.AddWithValue("@id_activity", id_activity);