int不包含带有1个参数的构造函数

时间:2013-06-11 08:24:07

标签: c# int

嘿伙计这个错误让我困惑了4个小时,而且我没有尝试过任何工作。

 SqlParameter id = new SqlParameter("@bookId",System.Data.SqlDbType.Int.ToString());
 id.Direction = System.Data.ParameterDirection.Output;
 cmd.Parameters.Add(id);
 cmd.ExecuteNonQuery();
 book.BookId = new int(id.Value.ToString()); // <------ERROR

错误是:

  

int不包含带有1个参数的构造函数

以下是我尝试过的其他一些事情:

int x = id.value.ToString();
int xi = Convert.ToInt32(x);

book.BookId = x;

8 个答案:

答案 0 :(得分:5)

也许这个?

book.BookId = Int32.Parse(id.Value.ToString());

答案 1 :(得分:4)

由于到目前为止没有一个答案实际上解释了你做错了什么 - 这是因为你试图调用int的构造函数并传递一个参数。 As you can see here,没有int构造函数接受字符串参数(或任何其他类型)。

有几种方法可以将字符串转换为整数,但最强大的(already posted by Thomas)是使用Int32.TryParse

答案 2 :(得分:1)

试试这个

 book.BookId = Convert.ToInt32(id.Value);

答案 3 :(得分:1)

如果你100%确定你的字符串包含一个整数而你可以抛出异常,你可以这样做:

string id = "55";
int x = Int32.Parse(id);

否则,您可以管理字符串不是整数的情况:

        string id = "55";
        int x = 0;
        if(!Int32.TryParse(id, out x))
        {
            //Manage the special case here where id is not a int
        }

答案 4 :(得分:0)

此声明看起来不正确

SqlParameter id = new SqlParameter("@bookId",System.Data.SqlDbType.Int.ToString());

我认为您应该将其更改为Int或String

SqlParameter id = new SqlParameter("@bookId",System.Data.SqlDbType.Int);

只需更改您的陈述

 book.BookId = Convert.ToInt32(id.Value.ToString()); 

答案 5 :(得分:0)

你必须尝试以下任何一项:

book.BookId = Int32.Parse(id.Value.ToString());

OR

book.BookId = (int)id.Value.ToString();

OR

book.BookId = int.Parse(id.Value.ToString());

答案 6 :(得分:0)

从我的角度来看,你正在使用ToString()。试试这个:

SqlParameter id = new SqlParameter("@bookId", System.Data.SqlDbType.Int);
id.Direction = System.Data.ParameterDirection.Output;
cmd.Parameters.Add(id);
cmd.ExecuteNonQuery();
Int32.TryParse(id.Value.ToString(),out book.BookId);

答案 7 :(得分:0)

您必须检查以确保id.Value不为NULL。 之后你确定了,那么这应该有效:

book.BookId = Convert.ToInt32(id.Value);

甚至

book.BookId = (int) id.Value;

修改

如果Int32.Parse()抛出格式异常,则必须给它一个非整数的东西。你说你确信它不是NULL,所以它是什么