我希望获得表中最高的ID号并增加它,但它似乎返回0,我是怎么做的。
private int MaxAuthorValue()
{
string connectionString = @"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Library;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string maxQuery = "SELECT MAX(AuthorId) FROM Author";
SqlCommand command = new SqlCommand(maxQuery, connection);
int x = (int)command.ExecuteScalar();
return x + 1;
}
}
我想要做的是返回已经发生的ID,以便用户可以添加一个作者而不必自己写入ID,因为这样做是非常不安全的(例如,如果作者有ID = 1,他们尝试添加另一位具有相同ID号的作者,这会产生错误。)
编辑:添加SQLServer表创建代码
CREATE TABLE [dbo].[Author]
(
[AuthorId] INT NOT NULL IDENTITY(1,1),
[Name] NVARCHAR (50) NOT NULL,
[Nationality] NVARCHAR (50) NOT NULL,
PRIMARY KEY CLUSTERED ([AuthorId] ASC)
);
答案 0 :(得分:1)
如果表格不是很大,我建议您删除并使用
重新创建表格CREATE TABLE dbo.<YOUR-TABLE-NAME>
(
Id int NOT NULL
IDENTITY(1, 1),
--Other Column names and types
)
ON [PRIMARY]
GO
如果没有,则添加新列并将其用作您的ID
ALTER <YOUR-TABLE-NAME>
ADD <NEW-ID-COLUMN-NAME> INT IDENTITY(1, 1)
GO
然后删除现有的ID列
编辑:您还尝试为标识列插入值。您不应为AuthorId
插入任何值。也就是说,您应该只为AuthorId
以外的其他列插入值。