插入表格:
CREATE TABLE [dbo].[CcureMessage]
(
[CcureMessageId] [UNIQUEIDENTIFIER] NOT NULL,[Event] [VARCHAR](20) NULL,[Type] [VARCHAR](20) NULL,[Message] [VARCHAR](MAX) NOT NULL,[Xml] [VARCHAR](4000) NOT NULL,CONSTRAINT [PK_CcureMessage]
PRIMARY KEY CLUSTERED ([CcureMessageId] ASC)
WITH (STATISTICS_NORECOMPUTE = OFF,IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[CcureMessage]
ADD CONSTRAINT [DF_CcureMessage_CcureMessageId]
DEFAULT (NEWID()) FOR [CcureMessageId]
GO
我使PK表具有默认值,以便根本不传递GUID,但似乎仍然收到与guid相关的错误。
插入可通过SSMS正常运行的命令:
INSERT INTO CcureMessage (Event,Type,Message,Xml)
VALUES ('event 3','type 3','big json 3','xml-ish');
C#代码:
public void DoInsert(Message msg)
{
// hard-coding this to set test values
TopicMessage tm = new TopicMessage();
tm.Event = "event 1";
tm.Type = "Type 1";
tm.Message = "json data message";
tm.Xml = "xml data goes here";
string connString = set to correct value;
string sql = "INSERT INTO CcureMessage (Event,Xml) VALUES (@Event,@Type,@Message,@Xml)";
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql,conn);
cmd.CommandType = System.Data.CommandType.Text;
SqlParameter eventParm = new SqlParameter("@Event",tm.CcureMessageId);
SqlParameter typeParm = new SqlParameter("@Type",tm.Type);
SqlParameter msgParm = new SqlParameter("@Message",tm.Message);
SqlParameter xmlParm = new SqlParameter("@Xml",tm.Xml);
cmd.Parameters.Add(eventParm);
cmd.Parameters.Add(typeParm);
cmd.Parameters.Add(msgParm);
cmd.Parameters.Add(xmlParm);
cmd.ExecuteNonQuery();
}
}
运行此命令会导致错误
结果空间不足,无法将uniqueidentifier值转换为char