-1

嘿,伙计们,这个错误已经让我困惑了 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;
4

8 回答 8

5

也许这个?

book.BookId = Int32.Parse(id.Value.ToString());
于 2013-06-11T08:27:22.510 回答
4

由于到目前为止没有一个答案实际上解释了你做错了什么 - 发生这种情况是因为你试图调用构造函数int并传递一个参数。正如您在此处看到的,没有int接受字符串参数(或任何其他类型,就此而言)的构造函数。

有几种方法可以将字符串转换为整数,但最强大的(正如Thomas 已经发布的)是使用Int32.TryParse.

于 2013-06-11T08:32:29.783 回答
1

试试这个

 book.BookId = Convert.ToInt32(id.Value);
于 2013-06-11T08:28:43.173 回答
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
        }
于 2013-06-11T08:29:38.477 回答
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()); 
于 2013-06-11T08:29:08.403 回答
0

您必须尝试以下任何一种:

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

或者

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

或者

book.BookId = int.Parse(id.Value.ToString());
于 2013-06-11T08:31:27.633 回答
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);
于 2013-06-11T08:32:14.820 回答
0

您必须检查以确保 id.Value 不为 NULL。你确定之后,这应该可以工作:

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

甚至

book.BookId = (int) id.Value;

编辑

如果Int32.Parse()抛出格式异常,则必须给它一些不是整数的东西。你说你有信心它不是NULL那是什么

于 2013-06-11T08:35:53.360 回答