C# 检查两个值C的Null或空字符串#
我想检查Subject Code和Subject Name的空字符串或空值,以便Subject Code和Subject Name的空字符串不会存储在数据库中。我是c#的新手。代码有错误。它声明无法从bool转换为字符串。我尝试了很多方法,但错误仍然存在。在修复了从bool转换为string的错误后,它返回了一个C# 检查两个值C的Null或空字符串#,c#,sql,C#,Sql,我想检查Subject Code和Subject Name的空字符串或空值,以便Subject Code和Subject Name的空字符串不会存储在数据库中。我是c#的新手。代码有错误。它声明无法从bool转换为字符串。我尝试了很多方法,但错误仍然存在。在修复了从bool转换为string的错误后,它返回了一个notfound错误。如何更改return NotFound()错误 public IHttpActionResult PostAddSubjectCode([FromB
notfound
错误。如何更改return NotFound()
错误
public IHttpActionResult PostAddSubjectCode([FromBody] ConfigSubjectCode SubjectCodes)
{
string Subject_Code = SubjectCodes.Subject_Code;
string Subject_Name = SubjectCodes.Subject_Name;
if (String.IsNullOrEmpty(Subject_Code) && String.IsNullOrEmpty(Subject_Name))
{
return NotFound();
}
else
{
string sql = "INSERT INTO[dbo].[GEO_SUBJECT_CODES] ([Subject_Code],[Subject_Name_BY_CLASS]) VALUES " +
"('" + Subject_Code + "', '" + Subject_Name + "');";
DBConnection dbConnection = new DBConnection();
dBConnection.UpdateTable(sql);
return Ok();
}
}
布尔值(Subject\u code==”“&&Subject\u Name==”“
)传递到字符串。IsNullOrEmpty
需要字符串
if
检查毫无意义核心
示例
我将把这个放在这里,因为我们有一个线程,并指出列出的问题
// These will make the if statement useless, it will never hit else
// string Subject_Code = "";
// string Subject_Name = "";
//Assumptions: Subject_Codes contians these props
if(string.IsNullOrEmtpy(SubjectCodes.Subject_Code) && string.IsNullOrEmpty(SubjectCodes.Subject_Name)){
// whatever you want to do...
} else {
//sql here - I'll skip the comments on why your sql is bad - re: use parameters
// return after successful sql - look into a try/catch
}
相反,在您的模型中查看—您可以同时获得服务器端和客户端验证。我强烈建议您阅读大量的教程,而不是零碎的东西。基于上述代码,您尝试做的是将布尔值与字符串值进行比较,这会给您带来错误,请尝试下面的解决方案
if (String.IsNullOrEmpty(Subject_Code) && String.IsNullOrEmpty(Subject_Name)){
return NotFound();
} else{
try{
//SQL Code
} catch (Exception ex){
//Your Code
}
}
注意:这是对OP问题的快速修复,而不是最佳做法。因为您的
如果/else
都返回,它将永远不会到达实际的更新代码。您将这两个变量都分配给一个固定的空字符串,这在任何情况下都不会导致if/else
工作。你想要这样的东西:
public IHttpActionResult PostAddSubjectCode([FromBody] ConfigSubjectCode SubjectCodes)
{
string Subject_Code = SubjectCodes.Subject_Code; // these can't be fixed ""
string Subject_Name = SubjectCodes.Subject_Name; // these can't be fixed ""
if (String.IsNullOrEmpty(Subject_Code) && String.IsNullOrEmpty(Subject_Name))
{
return NotFound();
}
else
{
string sql = "INSERT INTO[dbo].[GEO_SUBJECT_CODES] ([Subject_Code],[Subject_Name_BY_CLASS]) VALUES " +
"('" + Subject_Code + "', '" + Subject_Name + "');";
DBConnection dBConnection = new DBConnection();
dBConnection.UpdateTable(sql);
return Ok();
}
}
String.IsNullOrEmpty(aString)
-这就是您使用它的方式。方法IsNullOrEmpty
需要一个字符串作为参数,而不是布尔值,这是错误的原因。我想检查主题代码和主题名称使用和&
组合您的条件。像String.IsNullOrEmpty(str1)和&String.IsNullOrEmpty(str2)
。但是我认为你应该使用或代替AND,根据你的意图。我强烈建议你阅读SQL注入。并告诉我们抛出的确切错误。但是代码无法到达我的字符串sql。它声明了无法访问的代码detected@charles发布你的更新代码,它不应该。请注意,我只给了您一个片段,我已经进行了调整以使其更加清晰,是的,您的else
语句返回
因此您的sql是unreachable@charles这是因为您正在返回if语句的两个分支。@charles更新了一个简单的示例/指南。在克服此错误后,必须改进代码。关于如何在ASP.NET中进行正确的数据访问,有很多例子。请参见下面的我的评论,OP正在设置正在if中检查的空字符串,使其毫无意义。它将永远不会命中否则
我无法使用使用
。有一个错误,我假设这只是设置它的一个示例,为了代码的目的,他碰巧使用了空字符串,但实际上会从某处检索。我是不是给了怀疑太多的好处?好的。因此,您使用的任何dbConnection都不是从IDisposable派生的。。。在使用删除后,它仍然无法为catch添加主题代码和主题名称。我可以将抛出ex代码>?您好@charles,请阅读您不应该推广SQL注入,最好显示OP参数化查询。@Jeremy Thompson更新。什么是OP参数化查询?