嘿伙计这个错误让我困惑了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;
答案 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
,所以它是什么?