如何在按钮上从数据库中删除行单击wpf c#sql
下午好,我正在尝试从datatable和数据库中删除一行。目前,我可以从c#应用程序前端的数据表中删除一行。当我单击delete按钮时,我还需要从数据库中删除该行。我遇到的问题是,我不知道如何访问每行中的实际元素。当我将Console.WriteLine列为行时,输出为System.Data.DataRowView。我的目的是如果我可以访问数据行的元素,我可以编写一个sql语句来根据行id删除该行。任何帮助都将不胜感激 MainWindow.xaml如何在按钮上从数据库中删除行单击wpf c#sql,c#,sql,.net,wpf,C#,Sql,.net,Wpf,下午好,我正在尝试从datatable和数据库中删除一行。目前,我可以从c#应用程序前端的数据表中删除一行。当我单击delete按钮时,我还需要从数据库中删除该行。我遇到的问题是,我不知道如何访问每行中的实际元素。当我将Console.WriteLine列为行时,输出为System.Data.DataRowView。我的目的是如果我可以访问数据行的元素,我可以编写一个sql语句来根据行id删除该行。任何帮助都将不胜感激 MainWindow.xaml Window x:Class="B
Window x:Class="BagRoom.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:BagRoom"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="350,20,0,0" TextWrapping="Wrap" Text="Bag Room Lookup" VerticalAlignment="Top"/>
<TextBox Name="target" HorizontalAlignment="Left" Height="25" Margin="270,50,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="250"/>
<DataGrid Name="bagRoomGrid" HorizontalAlignment="Center" Height="300" Margin="0,119,0,0" VerticalAlignment="Center" Width="792">
<DataGrid.Columns>
<!-- ... -->
<DataGridTemplateColumn Header="Delete">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button x:Name="delete" Content="Delete" Click="DeleteRow"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<Button Click="showTable" Content="Show Table" HorizontalAlignment="Left" Margin="270,80,0,0" VerticalAlignment="Top" Width="75"/>
<Button Click="Window_Loaded" Content="Lookup" HorizontalAlignment="Left" Margin="525,50,0,0" VerticalAlignment="Top" Width="75"/>
<Button Click="addPlayer" Content="Add Player" HorizontalAlignment="Left" Margin="345,80,0,0" VerticalAlignment="Top" Width="75"/>
</Grid>
</Window>
“Id”是数据库表中的主键列
private void DeleteRow(object sender, RoutedEventArgs e)
{
DataRowView row = (DataRowView)bagRoomGrid.SelectedItem;
row.Delete();
int rowsAffected;
using (SqlConnection conn = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand("DELETE Team WHERE Id = " + row["Id"], conn);
cmd.Connection.Open();
rowsAffected = cmd.ExecuteNonQuery();
}
if (rowsAffected > 0)
dt.AcceptChanges();
else
dt.RejectChanges();
}
您使用的是SQL Server,因此文档就在这里。这与您在c#中使用的字符串相同:@jdweng我认为我需要从c#中的行中获取元素,然后才能从数据库中删除它们。您通常使用Where进行删除,并一次删除一个ID。因此,是的,您可能首先需要查询数据库以获取ID。@jdweng是的,那么您知道如何访问行中的元素,以便它不会返回System.Data.DataRowView?请参阅下面的内容。读卡器是一个数组,因此您可以按索引或名称访问列:reader[索引或字符串]:
private void DeleteRow(object sender, RoutedEventArgs e)
{
DataRowView row = (DataRowView)bagRoomGrid.SelectedItem;
row.Delete();
int rowsAffected;
using (SqlConnection conn = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand("DELETE Team WHERE Id = " + row["Id"], conn);
cmd.Connection.Open();
rowsAffected = cmd.ExecuteNonQuery();
}
if (rowsAffected > 0)
dt.AcceptChanges();
else
dt.RejectChanges();
}