0

我正在处理 .cshtm 页面和服务器端编码我面临的异常无法将类型隐式转换intstring. 代码如下

@{
    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”的定义,并且找不到接受“string”类型的第一个参数的扩展方法“Name”(您是否缺少 using 指令或程序集引用?)

现在我面临这个例外。

4

6 回答 6

2

如果您的变量 id 是 type int,则您不能将其添加到 astring而不先转换为字符串:id.ToString();

于 2012-12-21T21:05:10.953 回答
0

假设结果db.Execute(query)是一个整数,尝试调用该ToString方法:

db.Execute(query).ToString();
于 2012-12-21T21:04:07.767 回答
0

尝试 :

var query = "Select * from products where id="+id.ToString();
于 2012-12-21T21:06:04.587 回答
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);
于 2012-12-21T21:06:11.767 回答
0

您可以使用ToString()将整数转换为字符串。

就个人而言,我更喜欢以下内容,因为它似乎提供了更多控制:

var query = String.Format("Select * from products where id={0}", id);
于 2012-12-21T21:08:18.740 回答
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();
}
于 2012-12-21T21:10:30.833 回答