【问题标题】:Specified cast is not valid.?指定的演员表无效。?
【发布时间】:2015-02-28 08:31:30
【问题描述】:
protected void RegisterUser(object sender,EventArgs e) 
{
    int userid = 0;
    var s = (from a in dc.Insert_User(txtUsername.Text.Trim(), txtPassword.Text.Trim(), txtEmail.Text.Trim())
                 select a.Column1).SingleOrDefault();

   // gvtest.DataSource = s;
   // gvtest.DataBind();
    userid = Convert.ToInt32(s);
    string message = string.Empty;
    switch (userid)
    {
        case -1:
            message = "Username already exists.\\nPlease choose a different username.";
            break;
        case -2:
            message = "Supplied email address has already been used.";
            break;
        default:
            message = "Registration successful.\\nUser Id: " + userid.ToString();
            break;
    }
    ClientScript.RegisterStartupScript(GetType(), "alert", "alert('" + message + "');", true);
}

当我输入新记录进行注册时,查询时出现指定的演员表无效错误。记录也被插入到数据库中。

这里是存储过程

CREATE PROCEDURE [dbo].[Insert_User]
  @Username NVARCHAR(20),
  @Password NVARCHAR(20),
  @Email NVARCHAR(30)
AS
BEGIN
  SET NOCOUNT ON;
  IF EXISTS(SELECT UserId FROM Users WHERE Username = @Username)
  BEGIN
        SELECT -1 -- Username exists.
  END
  ELSE IF EXISTS(SELECT UserId FROM Users WHERE Email = @Email)
  BEGIN
        SELECT -2 -- Email exists.
  END
  ELSE
  BEGIN
        INSERT INTO [Users]
                 ([Username]
                 ,[Password]
                 ,[Email]
                 ,[CreatedDate])
        VALUES
                 (@Username
                 ,@Password
                 ,@Email
                 ,GETDATE())

        SELECT SCOPE_IDENTITY() -- UserId                 
 END
END

但是当从过程返回-1或-2时没有这样的错误

【问题讨论】:

  • 这真的不足以让我们说出哪里出了问题。您需要编写一个更好的问题,提供所涉及代码的完整详细信息,以及您遇到的问题的具体细节。请花时间提出一个好的问题,以便我们给您一个好的答案。
  • 现在我已经更新了我的问题,请查看它。

标签: asp.net sql-server linq-to-sql


【解决方案1】:

我想说最可能的答案是,由于 IDENTITY 是一个数字 (32),因此返回的数据很可能对于 Int32 来说太大了。如果标识列是唯一标识符,您可能会成功将其转换为 GUID 类型。

【讨论】:

    猜你喜欢
    • 2018-02-06
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多