c# - c# - 如何将bool更改为0或1,我可以投出吗?

  显示原文与译文双语对照的内容

我有这个方法:


public void UpdatePhrase(PHRASE phraseColumn, bool value, string phraseId) 


{


 sql = string.Format("UPDATE Phrase SET" + phraseColumn.Text() +" = {0} WHERE PhraseId = '{1}'", value, phraseId);


 App.DB.RunExecute(sql);


}



它不能正常工作,因为我需要 {0}的值是 0或者 1.

是否有一个简单的方法来获取值并将它的更改为 0或者 1?

时间:

你真正需要做的是重构你的 App.Db.RunExecute 以接收参数,以便你可以编写


public void UpdatePhrase(PHRASE phraseColumn, bool value, string phraseId) 


{


 sql ="UPDATE Phrase SET" + phraseColumn.Text() +" = @v WHERE PhraseId = @id";


 List<SqlParameter> prms = new List<SqlParameter>


 {


 new SqlParameter {ParameterName ="@v", SqlDbType = SqlDbType.Boolean, Value = value},


 new SqlParameter {ParameterName ="@id", SqlDbType = SqlDbType.NVarChar, Value = phraseId}


 };


 App.DB.RunExecute(sql, prms);


}



部分删除 SQL注入 问题( 因为在用户输入的值来自于用户输入的情况下,我认为部分原因仍然是关注的根源)

现在,RunExecute 应该改为


void RunExecute(string sqlCommand, List<SqlParameter> prms = null)


{


//usual code to open connection and create a command


. . ....



//If the caller passes a parameters list, add them to the command


 if(prms!= null)


 cmd.Parameters.AddRange(prms.ToArray());



//Now execute the command


 cmd.ExecuteNonQuery();


}



RunExecute的更改使用可选参数,因此当前代码不会受新参数的影响,但是你可以从现在开始编写更好的Sql代码。


value? 1 : 0



在 @Sean 回答或者


Convert.ToInt32(value)



将指定的布尔值转换为等价的32位 符号整数。

...