如何在不使用EntityFramework的情况下将datagrid数据保存回mysql数据库
我正在尝试使用MySQL数据库中的数据加载、剪切、复制、粘贴、删除、更新、插入、撤消和重做功能来训练DATAGRID。 internet上大多数可用的解决方案都使用实体框架,出于某些原因,我希望消除实体框架。 遇到的问题如何在不使用EntityFramework的情况下将datagrid数据保存回mysql数据库,mysql,wpf,entity-framework,xaml,mvvm,Mysql,Wpf,Entity Framework,Xaml,Mvvm,我正在尝试使用MySQL数据库中的数据加载、剪切、复制、粘贴、删除、更新、插入、撤消和重做功能来训练DATAGRID。 internet上大多数可用的解决方案都使用实体框架,出于某些原因,我希望消除实体框架。 遇到的问题 加载函数在刚初始化时可以正常工作,但不适用于CmdLoad按钮控件 我对CmdSave控件有问题。数据库中未反映任何更改 如何进行其他功能剪切、复制、粘贴、删除、撤消、重做 型号 public class ClrIdM : INotifyPropertyChanged
CmdLoad
按钮控件CmdSave
控件有问题。数据库中未反映任何更改 public class ClrIdM : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChangedEvent(string propertyName) { if (PropertyChanged != null) { var e = new PropertyChangedEventArgs(propertyName); PropertyChanged(this, e); } }
private string _Find,_sId,_sFirstName,_sLastName;
public string Find { get { return _Find; } set { if (_Find != value) { _Find = value; RaisePropertyChangedEvent("Find"); } } }
public string sId { get { return _sId; } set { if (_sId != value) { _sId = value; RaisePropertyChangedEvent("sId"); } } }
public string sFirstName { get { return _sFirstName; } set { if (_sFirstName != value) { _sFirstName = value; RaisePropertyChangedEvent("sFirstName"); } } }
public string sLastName { get { return _sLastName; } set { if (_sLastName != value) { _sLastName = value; RaisePropertyChangedEvent("sLastName"); } } }
}
<DataGrid Grid.Row="3" ItemsSource="{Binding MMs}" SelectedItem="{Binding SelectedItem}" >
<DataGrid.Columns>
<DataGridTextColumn x:Name="ID" Header="ID" Binding="{Binding sId, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<DataGridTextColumn x:Name="FIRST_NAME" Header="FIRST NAME" Binding="{Binding sFirstName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<DataGridTextColumn x:Name="LAST_NAME" Header="LAST NAME" Binding="{Binding sLastName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataGrid.Columns>
</DataGrid>
<Button Content="Load" Command="{Binding CmdLoad}" />
<Button Content="Save" Command="{Binding CmdSave}" />
public class ClrIdVMD
{
MySqlConnection con; MySqlCommand cmd;
MySqlDataAdapter da = new MySqlDataAdapter(); DataSet ds = new DataSet();
public ObservableCollection<ClrIdM> MMs { get; set; }
private ICommand cmdLoad, cmdSave;
public ICommand CmdLoad { get { if (cmdLoad == null) cmdLoad = new RelayCommand(p => Load()); return cmdLoad; } }
public ICommand CmdSave { get { if (cmdSave == null) cmdSave = new RelayCommand(p => Save()); return cmdSave; } }
public void Edit() { var detVM = new ClrIdVMF(SelectedItem); var dets = new eClrEditStd(detVM); dets.ShowDialog(); }
public void Load() { DG(); }
public void Save() { Update(); }
public ClrIdM SelectedItem { get; set; }
public string sId { get; private set; }
public object sFirstName { get; private set; }
public ClrIdVMD() { Load(); }
private void DG()
{
var connectionString = ConfigurationManager.ConnectionStrings["connscmag"].ConnectionString;
try
{
con = new MySqlConnection(connectionString); con.Open();
cmd = new MySqlCommand("select * from stdclr", con);
da = new MySqlDataAdapter(cmd);
da.Fill(ds, "stdclr");
if (MMs == null) MMs = new ObservableCollection<ClrIdM>();
foreach (DataRow dr in ds.Tables[0].Rows)
{
MMs.Add(new ClrIdM
{
sId = dr["Id1"].ToString(),
sFirstName = dr["sFirstName"].ToString(),
sLastName = dr["sLastName"].ToString(),
});
}
}
catch (MySqlException sx) { }
catch (Exception ex) { }
finally { ds = null; da.Dispose(); con.Close(); con.Dispose(); }
}
private void Update()
{
var connectionString = ConfigurationManager.ConnectionStrings["connscmag"].ConnectionString;
try
{
con = new MySqlConnection(connectionString); con.Open();
cmd = new MySqlCommand("UPDATE stdclr SET " +
"sFirstName = @sFirstName, " +
"sLastName = @sLastName " +
"WHERE ID1 = '" + sId + "' ", con);
cmd.Parameters.AddWithValue("@sFirstName", sFirstName);
cmd.Parameters.AddWithValue("@sLastName", sLastName);
cmd.ExecuteNonQuery(); con.Close();
}
catch (MySqlException sx) { }
catch (Exception ex) { }
}
}
查看-XAML
public class ClrIdM : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChangedEvent(string propertyName) { if (PropertyChanged != null) { var e = new PropertyChangedEventArgs(propertyName); PropertyChanged(this, e); } }
private string _Find,_sId,_sFirstName,_sLastName;
public string Find { get { return _Find; } set { if (_Find != value) { _Find = value; RaisePropertyChangedEvent("Find"); } } }
public string sId { get { return _sId; } set { if (_sId != value) { _sId = value; RaisePropertyChangedEvent("sId"); } } }
public string sFirstName { get { return _sFirstName; } set { if (_sFirstName != value) { _sFirstName = value; RaisePropertyChangedEvent("sFirstName"); } } }
public string sLastName { get { return _sLastName; } set { if (_sLastName != value) { _sLastName = value; RaisePropertyChangedEvent("sLastName"); } } }
}
<DataGrid Grid.Row="3" ItemsSource="{Binding MMs}" SelectedItem="{Binding SelectedItem}" >
<DataGrid.Columns>
<DataGridTextColumn x:Name="ID" Header="ID" Binding="{Binding sId, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<DataGridTextColumn x:Name="FIRST_NAME" Header="FIRST NAME" Binding="{Binding sFirstName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<DataGridTextColumn x:Name="LAST_NAME" Header="LAST NAME" Binding="{Binding sLastName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataGrid.Columns>
</DataGrid>
<Button Content="Load" Command="{Binding CmdLoad}" />
<Button Content="Save" Command="{Binding CmdSave}" />
public class ClrIdVMD
{
MySqlConnection con; MySqlCommand cmd;
MySqlDataAdapter da = new MySqlDataAdapter(); DataSet ds = new DataSet();
public ObservableCollection<ClrIdM> MMs { get; set; }
private ICommand cmdLoad, cmdSave;
public ICommand CmdLoad { get { if (cmdLoad == null) cmdLoad = new RelayCommand(p => Load()); return cmdLoad; } }
public ICommand CmdSave { get { if (cmdSave == null) cmdSave = new RelayCommand(p => Save()); return cmdSave; } }
public void Edit() { var detVM = new ClrIdVMF(SelectedItem); var dets = new eClrEditStd(detVM); dets.ShowDialog(); }
public void Load() { DG(); }
public void Save() { Update(); }
public ClrIdM SelectedItem { get; set; }
public string sId { get; private set; }
public object sFirstName { get; private set; }
public ClrIdVMD() { Load(); }
private void DG()
{
var connectionString = ConfigurationManager.ConnectionStrings["connscmag"].ConnectionString;
try
{
con = new MySqlConnection(connectionString); con.Open();
cmd = new MySqlCommand("select * from stdclr", con);
da = new MySqlDataAdapter(cmd);
da.Fill(ds, "stdclr");
if (MMs == null) MMs = new ObservableCollection<ClrIdM>();
foreach (DataRow dr in ds.Tables[0].Rows)
{
MMs.Add(new ClrIdM
{
sId = dr["Id1"].ToString(),
sFirstName = dr["sFirstName"].ToString(),
sLastName = dr["sLastName"].ToString(),
});
}
}
catch (MySqlException sx) { }
catch (Exception ex) { }
finally { ds = null; da.Dispose(); con.Close(); con.Dispose(); }
}
private void Update()
{
var connectionString = ConfigurationManager.ConnectionStrings["connscmag"].ConnectionString;
try
{
con = new MySqlConnection(connectionString); con.Open();
cmd = new MySqlCommand("UPDATE stdclr SET " +
"sFirstName = @sFirstName, " +
"sLastName = @sLastName " +
"WHERE ID1 = '" + sId + "' ", con);
cmd.Parameters.AddWithValue("@sFirstName", sFirstName);
cmd.Parameters.AddWithValue("@sLastName", sLastName);
cmd.ExecuteNonQuery(); con.Close();
}
catch (MySqlException sx) { }
catch (Exception ex) { }
}
}