0
我有一個SQL表,承載數據根據日常活動而變化。我有一個C#WPF應用程序,我試圖設置查看此SQL數據。工作原理:您輸入某人的姓氏並單擊搜索,然後listview將顯示基於SQL命令的數據。WPF Listview搜索SQL表的數據
這裏是XAML代碼中,我爲ListView:
<ListView x:Name="searchedList" HorizontalAlignment="Left" Height="190" Margin="10,20,0,0" VerticalAlignment="Top" Width="555" Grid.ColumnSpan="2" ItemsSource="{Binding Source=Server}">
<ListView.View>
<GridView>
<GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding NameColumn}"/>
<GridViewColumn Header="TimeA" Width="70" DisplayMemberBinding="{Binding TimeAColumn}"/>
<GridViewColumn Header="TimeB" Width="70" DisplayMemberBinding="{Binding TimeBColumn}"/>
<GridViewColumn Header="TimeC" Width="70" DisplayMemberBinding="{Binding TimeCColumn}"/>
<GridViewColumn Header="DateA" Width="120" DisplayMemberBinding="{Binding DateAColumn}"/>
<GridViewColumn Header="DateB" Width="120" DisplayMemberBinding="{Binding DateBColumn}"/>
</GridView>
</ListView.View>
</ListView>
這裏是代碼的C#部分:
private void btnSearch_Click(object sender, RoutedEventArgs e)
{
try
{
SqlConnection con = new SqlConnection("mysqlconnection");
DataSet ds;
SqlDataAdapter da;
SqlCommandBuilder scb;
DataTable dt;
da = new SqlDataAdapter("SELECT * FROM [table] WHERE [NameColumn] LIKE '%'" + txtSearch.Text + "'%' OR [DateAColumn] LIKE '%'" + txtSearch.Text + "'%' OR [TimeAColumn] LIKE '" + txtSearch.Text + "' OR [TimeBColumn] LIKE '" + txtSearch.Text + "' OR [TimeCColumn] LIKE '" + txtSearch.Text + "'", con);
ds = new DataSet();
dt = new DataTable();
ds.Clear();
da.Fill(dt);
searchedList.ItemsSource = dt.DefaultView;
con.Open();
con.Close();
}
catch
{
return;
}
}
但是在別人的姓氏,那絕對是打字時在數據庫中,Listview不會填充所需的數據。我似乎無法找到我出錯的地方,當然我對於C#中的WPF還是比較新的。 (這是一個搜索功能,所以它確實需要空白,直到搜索數據。)
你應該使用基於參數查詢。您的單引號放置不正確。例如:LIKE'%'「+ txtSearch.Text +」'%'應該是LIKE'%「+ txtSearch.Text +」%'「 –
@Anup Sharma非常好,現在它正在填充。將其標記爲對其他人的回答。謝謝你:) –
好的事情也會做:使用TPL(任務等)查詢另一個線程,也不要只吃掉所有發現的錯誤,並做沒有任何關於它們的信息,也可以使用finally(來自try-catch)來確保即使出現錯誤,您的數據庫連接總是被關閉。但是,嘿,我很確定上面的代碼可能用於測試/學習的目的而不是生產代碼。:) –