Я пытаюсь запросить таблицу, чтобы найти запись, подобную этой:
string owner = "sometextlikethis";
string pictureName = "pexels-photo.jpg_15-Apr-19 07:59:37"; //problem
PictureLibrary _pictureObj = new PictureLibrary();
var connString = db.connStringCompany;
string cmdText = "SELECT ID FROM PictureLibrary WHERE CONVERT(VARCHAR, PictureOwner) =@PictureOwner AND CONVERT(VARCHAR, PictureName) =@PictureName;";
using (var connection = new SqlConnection(connString))
{
using (var sqlCmd = new SqlCommand(cmdText, connection))
{
SqlParameter param1 = new SqlParameter();
param1.ParameterName = "@PictureOwner";
param1.Value = owner;
sqlCmd.Parameters.Add(param1);
SqlParameter param2 = new SqlParameter();
param2.ParameterName = "@PictureName";
param2.Value = pictureName;
sqlCmd.Parameters.Add(param2);
connection.Open();
SqlDataReader dr = sqlCmd.ExecuteReader();
while (dr.Read()) //record with matching owner is found but if I add pictureName as additional parameter reader does not find anything
{
_pictureObj.Id = Convert.ToInt32(dr["ID"]);
}
connection.Close();
}
}
return _pictureObj;
Когда я запускаю запрос, идентификатор равен нулю, потому что читатель не находит ничего.Я попытался запрос без параметра pictureName, и он работает.
Я также проверил таблицу и запись, в которой существует данный запрос на совпадение PictureOwner и PictureName.
Я предполагаю, что у меня возникла проблема с запросом на запись, где параметр содержит двоеточие ':'.Я использую имя файла и текущую дату объединения, чтобы создать имя изображения перед вставкой его в SQL.
Следует ли изменить имя файла, чтобы избежать двоеточия?
РЕДАКТИРОВАТЬ:
Проблема была не в двоеточии ':', а в длине VARCHAR
отсутствует в запросе.