在MyViewModel中,我有一个字符串属性(SearchBox)绑定到我视图中的文本框。当我点击搜索按钮A命令时,发送到我的数据层类以从dB获得搜索结果(图像)。
我的问题是如何从searchBox传递字符串以及在datalayer类中使用的方法。
public class MyViewModel : NotifyUIBase
{
private string _searchBox;
public string SearchBox // the Name property
{
get { return this._searchBox; }
set { this._searchBox = value; RaisePropertyChanged(); }
}
public MyViewModel()
{
FindImageCommand = new RelayCommand(FindImage);
}
public RelayCommand FindImageCommand { get; private set; }
private void FindImage()
{
var dbFunctions = new DatabaseFunctions();
FindVisualReferences = dbFunctions.FindVisualReferences();
}
}
在DataLayer类中,我需要使用查询中SearchBox的字符串来搜索dB。
public class DataLayer
{
public ObservableCollection<Image> FindVisualReferences()
{
var FindVisualReferences = new ObservableCollection<Image>();
String dbConnectionString = @"Data Source =mydB.sqlite";
SQLiteConnection cnn = new SQLiteConnection(dbConnectionString);
cnn.Open();
====> string Query = "Select* from images where title = '" + SearchBox.ToUpper() + "'";
SQLiteDataAdapter sda = new SQLiteDataAdapter(Query, cnn);
DataTable dt = new DataTable();
sda.Fill(dt);
// rest of dB method
}
}
如何从MyViewModel中的SearchBox获取字符串到查询中以搜索DataLayer类中的数据库?
答案 0 :(得分:0)
首先,更改您的方法以接受字符串参数:
public ObservableCollection<Image> FindVisualReferences(string search)
现在,您可以在调用此方法时简单地传入SearchBox
字符串,如下所示:
FindVisualReferences = dbFunctions.FindVisualReferences(SearchBox);
然后,您可以重写查询以引用参数,如下所示:
string Query = "Select* from images where title = '" + search.ToUpper() + "'";
现在,@ Floris很好地使用参数而不是字符串连接,我建议查看this,因为它已经得到了解答。