xaml:
Codebehind:
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");
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));
}
}