为什么我从 SQL Server 收到错误“指定的字符串不是电子邮件地址所需的格式”

本文关键字:字符串 电子邮件地址 格式 SQL Server 错误 为什么 | 更新日期: 2023-09-27 18:36:35

这对我来说非常神秘,因为我丝毫没有表示此参数是指电子邮件地址(形式为 XXX@XXX.XXX)。没有属性、元数据等。我在变量命名中使用了email这个词,但除此之外,我不明白 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="lkassjdkljasdklj@gmail.com">
</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" 的内容时,它会给我错误

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

为什么我从 SQL Server 收到错误“指定的字符串不是电子邮件地址所需的格式”

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

似乎您的表列没有触发器或任何类型的约束。