C# 将枚举值写入db列 我使用我认为是非常标准的C语言和T-SQL代码来填充数据类型 char(1)< /C> >基于C* EnUM > char 值:
我看到一个星号C# 将枚举值写入db列 我使用我认为是非常标准的C语言和T-SQL代码来填充数据类型 char(1)< /C> >基于C* EnUM > char 值:,c#,sql-server,stored-procedures,enums,C#,Sql Server,Stored Procedures,Enums,我看到一个星号*在应该写入C时写入db——但我一直无法找到一致的回购协议,我不知道这是怎么发生的 一些问题是如何将包含枚举中不存在的值的行插入到我的数据库中?星号在这种情况下有什么特殊意义吗 以下是具有代表性的代码-为了可读性而精简: CREATE TABLE [MY_TABLE]( [ID] [bigint] IDENTITY(1,1) NOT NULL, [STATUS] [char](1) NOT NULL, PRIMARY KEY CLUSTERED ( [ID
*
在应该写入C
时写入db——但我一直无法找到一致的回购协议,我不知道这是怎么发生的
一些问题是如何将包含枚举中不存在的值的行插入到我的数据库中?星号在这种情况下有什么特殊意义吗
以下是具有代表性的代码-为了可读性而精简:
CREATE TABLE [MY_TABLE](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[STATUS] [char](1) NOT NULL,
PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE PROCEDURE [INSERT_TO_MY_TABLE]
(
@status [char](1)
)
AS
BEGIN
INSERT INTO [MY_TABLE]
(
[STATUS]
)
VALUES
(
@status
)
END
public enum Status
{
Adult = 'A',
Juvenile = 'J',
Child = 'C'
}
Statu status = Status.Child;
using (var command = connection.CreateCommand())
{
command.CommandText = $"INSERT_TO_MY_TABLE";
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter($"@status", (char)status));
command.ExecuteNonQuery();
}
看起来代码中有Status和StatusEnum处于活动状态-两个不同的不相关枚举 您想将StatusEnum更改为Status 此外,字符串转换可以生成值“Child”而不是“C”作为参考
status.ToString().Substring(0,1)-将提取“Child”的第一个字符,而不是“C”的值。在将“*”写入表的代码中,我们没有看到其他内容。在你发布的片段中,这是不可能发生的。如果您需要处理字符,可能会出现重复。我建议您使用常量,或者使用
char
属性创建一个类,并为允许的字符值创建一组静态实例,而不是使用enum
@juharr将enum
与char
值一起使用会有什么问题对不起,StatusEnum是一个输入错误-我现在已经解决了