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"
的电子邮件字段中键入它给我回错误
指定的字符串不是电子邮件地址所需的格式。
也许你有一个在电子邮件列上执行验证的表上的插入触发器。 –
请检查你的表的定义,尤其是触发器和检查约束(列级别/表级别) – Shnugo
你还可以提供完整的堆栈跟踪 - 这个*精确的*错误消息可以由.NET邮件组件提出,这是一个有趣的巧合。我真正要问的是,你能否确认你是如何确定错误来自SQL Server的 - 毕竟,你是一个自称为“次级”的web开发者;-)(顺便说一句好名字!) –