SQL 服务器查询 其中字符串中有 ':' 冒号 returns 未找到
SQL Server query Where string has ':' colon in it returns not found
我正在尝试查询 table 以查找这样的记录:
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;
当我运行查询时,ID为空,因为reader没有找到任何东西。我尝试了不带 pictureName 参数的查询,它有效。
我还检查了 table 并记录了给定 PictureOwner 和 PictureName 匹配查询存在的位置。
我猜我在查询参数包含“:”冒号的记录时遇到了问题。在将其插入到 SQL 之前,我正在使用文件名和当前日期连接来创建图像名称。
我是否应该更改文件的命名以避免冒号?
编辑:
问题不在于冒号“:”,而在于查询中缺少 VARCHAR
的长度。
这里的问题应该是您将 PictureOwner
转换为 VARCHAR
,这将截断您的字符串。尝试指定相应的长度如VARCHAR(255)
我正在尝试查询 table 以查找这样的记录:
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;
当我运行查询时,ID为空,因为reader没有找到任何东西。我尝试了不带 pictureName 参数的查询,它有效。
我还检查了 table 并记录了给定 PictureOwner 和 PictureName 匹配查询存在的位置。
我猜我在查询参数包含“:”冒号的记录时遇到了问题。在将其插入到 SQL 之前,我正在使用文件名和当前日期连接来创建图像名称。
我是否应该更改文件的命名以避免冒号?
编辑:
问题不在于冒号“:”,而在于查询中缺少 VARCHAR
的长度。
这里的问题应该是您将 PictureOwner
转换为 VARCHAR
,这将截断您的字符串。尝试指定相应的长度如VARCHAR(255)