我正在研究.cshtm页面和服务器端编码我正面临异常
无法将int
类型隐式转换为string
。代码如下
@{
var id = Request.QueryString["Id"]; //page.cshtml?id=5
var data="";
var query = "Select * from products where id="+id;
data = db.Execute(query).toString();
}
string'不包含'Name'的定义,也没有扩展方法'Name'接受类型'string'的第一个参数(你是否缺少using指令或汇编引用?)
现在我正面临这个例外。
答案 0 :(得分:2)
如果您的变量ID属于int
类型,则无法在不转换为字符串的情况下将其添加到string
:id.ToString();
答案 1 :(得分:0)
假设db.Execute(query)
的结果是整数,请尝试调用ToString
方法:
db.Execute(query).ToString();
答案 2 :(得分:0)
尝试:
var query = "Select * from products where id="+id.ToString();
答案 3 :(得分:0)
public int Execute(string commandText, params Object[] args)
变量数据是字符串但执行return int
var query = "Select * from products where id="+id;
int data = db.Execute(query);
//or string data = Convert.ToString(db.Execute(query), formatProvider);
答案 4 :(得分:0)
您可以使用ToString()
将整数转换为字符串。
就个人而言,我更喜欢以下内容,因为它似乎提供了更多控制:
var query = String.Format("Select * from products where id={0}", id);
答案 5 :(得分:0)
您尝试做的事情已经成熟,有SQL注入的可能性。
您想使用SqlCommand
并使用SqlParameter
来阻止注射。
此方法您也不必担心转换类型,ADO.Net会为您处理。
假设您正在使用SqlConnection连接到MSSQL数据库:
var id = Request.QueryString["Id"];
var query = "Select * from products where id=@id";
var data = "";
using (SqlCommand command = new SqlCommand(query, db))
{
command.Parameters.Add(new SqlParameter("@id", id));
data = command.ExecuteScalar().ToString();
}