2016-02-28 16 views
0

这对我来说很神秘,因为我没有任何表示这个参数是指一个电子邮件地址(形式为[email protected])。没有属性,元数据等。我在变量的命名中使用了email这个词,但除此之外,我不明白SQL Server如何让我回到这个错误。为什么我会收到错误“指定的字符串不是电子邮件地址所需的格式。”从SQL Server?

HTML:

<fieldset class="form-group"> 
    <label for="email-address">Email address</label> 
    <input type="text" class="form-control" name="eaddr" id="email-address" value="[email protected]"> 
</fieldset> 

的JavaScript:

 $.ajax({ 
      ..., 
      data: JSON.stringify({ 
       ... 
       Email: $('input[name="eaddr"').val(), 
       ... 
      }), 
      .... 
     }); 

C#:

public Guid? AddPartner (PartnerInit P) 
{ 
    // returns the id of the partner that was added 
    // on error, returns null 
    Guid? pid = null; 
    // Insert partner to database 
    using (SqlCommand cmd = new SqlCommand("AddPartner", this._Conn)) 
    { 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.AddWithValue("@first_name", P.FirstName); 
     cmd.Parameters.AddWithValue("@last_name", P.LastName); 
     cmd.Parameters.AddWithValue("@org_name", P.OrgName); 
     cmd.Parameters.AddWithValue("@email", P.Email); 
     cmd.Parameters.AddWithValue("@region_id", P.RegionId); 
     SqlParameter output = new SqlParameter("@new_guid", SqlDbType.UniqueIdentifier) { Direction = ParameterDirection.Output }; 
     cmd.Parameters.Add(output); 
     this._Conn.Open(); 
     cmd.ExecuteNonQuery(); 
     pid = (Guid?)output.Value; 
     this._Conn.Close(); 
    } 

T-SQL:

CREATE PROCEDURE AddPartner (@first_name NVARCHAR(50), 
          @last_name NVARCHAR(50), 
          @org_name NVARCHAR(50), 
          @email NVARCHAR(254), 
          @region_id INT, 
          @new_guid UNIQUEIDENTIFIER OUTPUT) 
AS 
BEGIN 
     DECLARE @T TABLE (OutputGuid UNIQUEIDENTIFIER) 

     INSERT INTO Partners (first_name, last_name, org_name, email, region_id) 
     OUTPUT INSERTED.id INTO @T 
     VALUES (@first_name, @last_name, @org_name, @email, @region_id) 

     SELECT @new_guid = OutputGUID FROM @T 
    END 
GO 

这是不是一个错误......我只是好奇,怎么当我像"blahblahblah"的电子邮件字段中键入它给我回错误

指定的字符串不是电子邮件地址所需的格式。

+2

也许你有一个在电子邮件列上执行验证的表上的插入触发器。 –

+0

请检查你的表的定义,尤其是触发器和检查约束(列级别/表级别) – Shnugo

+1

你还可以提供完整的堆栈跟踪 - 这个*精确的*错误消息可以由.NET邮件组件提出,这是一个有趣的巧合。我真正要问的是,你能否确认你是如何确定错误来自SQL Server的 - 毕竟,你是一个自称为“次级”的web开发者;-)(顺便说一句好名字!) –

回答

0

每当您定义带有无效邮件地址的MailAddressMailMessage对象时,都会发生此错误消息。

看起来你没有触发器或任何类型的约束你的表列。

相关问题