无法在.cshtml文件中隐式转换类型'int'为'string'

时间:2012-12-21 21:02:32

标签: c# sql database

我正在研究.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指令或汇编引用?)

现在我正面临这个例外。

6 个答案:

答案 0 :(得分:2)

如果您的变量ID属于int类型,则无法在不转换为字符串的情况下将其添加到stringid.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();
}