В MyViewModel У меня есть свойство string (SearchBox), которое привязано к текстовому полю в моем представлении. Когда я нажимаю кнопку searchbutton, команда посылает мне свой класс datalayer, чтобы получить результат поиска (изображений) с дБ.Передача строки другому классу
Моя проблема заключается в том, как передать строку из 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 в запросе для поиска дБ.
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
}
}
Как получить строку из SearchBox в MyViewModel в запросе для поиска в базе данных в DataLayer классе?
Пожалуйста, объясните, что вы пробовали, что это такое и как оно отличается от того, что вы хотели этого сделать. Обязательно укажите [хороший, _minimal_, _complete_ пример кода] (https://stackoverflow.com/help/mcve), иллюстрирующий все это. В частности, пожалуйста, объясните, почему вы не можете просто передать значение методу «FindVisualReferences()», как это обычно бывает, когда они хотят, чтобы какой-либо метод вызывался, чтобы иметь доступ к определенному ему определенному значению. –
Как @PeterDuniho сказал, просто перейдите dbFunctions.FindVisualReferences (SearchBox). Также не заключайте запрос sql, как это, он открывает его для SQL-инъекции. Используйте параметры! Используйте SQLiteCommand и добавьте параметры. – Floris