public partial class MainWindow : Window, INotifyPropertyChanged { SQLiteConnection con = new SQLiteConnection("Data Source=MyDatabase.sqlite"); public MainWindow() { InitializeComponent(); CreateTable(); DataContext = this; } private DataRowView selectedUser; public DataRowView SelectedUser { get { return selectedUser; } set { if (selectedUser != value) { selectedUser = value; OnPropertyChanged("SelectedUser"); } } } private void Button_Click(object sender, RoutedEventArgs e) { if (selectedUser != null) { con.Open(); int userid = Convert.ToInt32(((DataRowView)dg.SelectedItem).Row["Id"]); string mydeger = ((DataRowView)dg.SelectedItem).Row["Deger"].ToString(); string myName = ((DataRowView)dg.SelectedItem).Row["Name"].ToString(); User u = new User(); u.Id = userid; u.Deger = mydeger; u.Name = myName; MessageBox.Show(userid.ToString()); EditUser(u); GridDo(dg, "MyData"); GridDo(dg1, "MyData"); con.Close(); } } private int EditUser(User user) { const string query = "UPDATE MyData SET Deger = @Deger ,Name = @Name WHERE Id = @id"; var args = new Dictionary { {"@id", user.Id}, {"@Name", user.Name}, {"@Deger", user.Deger} }; return ExecuteWrite(query, args); } private int AddUser(User user) { const string query = "INSERT INTO MyData(Name,Deger) VALUES(@Name, @Deger)"; var args = new Dictionary { {"@Name", user.Name}, {"@Deger", user.Deger}, }; return ExecuteWrite(query, args); } private int ExecuteWrite(string query, Dictionary args) { int numberOfRowsAffected; using (var con = new SQLiteConnection("Data Source=MyDatabase.sqlite")) { con.Open(); using (var cmd = new SQLiteCommand(query, con)) { foreach (var pair in args) { cmd.Parameters.AddWithValue(pair.Key, pair.Value); } numberOfRowsAffected = cmd.ExecuteNonQuery(); } return numberOfRowsAffected; } } public void CreateTable() { SQLiteConnection.CreateFile("MyDatabase.sqlite"); SQLiteConnection m_dbConnection = new SQLiteConnection("Data Source=MyDatabase.sqlite"); m_dbConnection.Open(); string sql = "create table MyData ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Name varchar(20),Deger varchar(20) ) "; SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection); command.ExecuteNonQuery(); ObservableCollection users = new ObservableCollection(); users.Add(new User() { Name = "user1", Deger = "1" }); users.Add(new User() { Name = "user2", Deger = "23" }); users.Add(new User() { Name = "user3", Deger = "2" }); foreach (var user in users) { AddUser(user); } SQLiteCommand sqlCom = new SQLiteCommand("Select * From MyData", m_dbConnection); SQLiteDataAdapter sda = new SQLiteDataAdapter(sqlCom); DataTable dt = new DataTable(); sda.Fill(dt); if (dt.Rows.Count > 0) { dg.ItemsSource = dt.DefaultView; } m_dbConnection.Close(); } public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged([CallerMemberName] string name = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } public void GridDo(DataGrid grd,string id) { SQLiteCommand sqlCom = new SQLiteCommand("Select * From ("+id+")", con); SQLiteDataAdapter sda = new SQLiteDataAdapter(sqlCom); DataTable dt = new DataTable(); sda.Fill(dt); grd.ItemsSource = null; grd.ItemsSource = dt.DefaultView; } } public class User: INotifyPropertyChanged { private int id; public int Id { get { return id; } set { if (id != value) { id = value; OnPropertyChanged("Id"); } } } private string name; public string Name { get { return name; } set { if (name != value) { name = value; OnPropertyChanged("Name"); } } } private string deger; public string Deger { get { return deger; } set { if (deger != value) { deger = value; OnPropertyChanged("Deger"); } } } public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged([CallerMemberName] string name = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } }