private void btnOk_Click(object sender, EventArgs e)
{
Helper.openConnection();
SqlCommand cmd = new SqlCommand();
cmd.Connection = Helper.cn;
cmd.CommandText = "insert into Characters values(@Name, 'Novice', 1, 40, 10, 0, @STR, @AGI, @VIT, @DEX, @LUK, @INT, 1, 1)";
cmd.Parameters.AddWithValue("@Name", txtName.Text);
cmd.Parameters.AddWithValue("@STR", txtStr.Text);
cmd.Parameters.AddWithValue("@AGI", txtAgi.Text);
cmd.Parameters.AddWithValue("@VIT", txtVit.Text);
cmd.Parameters.AddWithValue("@DEX", txtDex.Text);
cmd.Parameters.AddWithValue("@LUK", txtLuk.Text);
cmd.Parameters.AddWithValue("@INT", txtInt.Text);
cmd.ExecuteNonQuery();
Helper.cn.Close();
MessageBox.Show("Character successfully created!");
this.Close();
}
上面写的是我在C#中为我的项目创建简单字符的代码。我有一个问题是自动增加CharacterSlot
列,这是一个非主键,因为在下图中,CharacterID
是我的主键。
我还选择了CharacterID
作为主要版本,因为每个帐户可以包含多个字符。以下是我的SQL Server数据库中的图像。
编辑:每个字符插槽是一个可点击的图片框,可以更改在字符选择屏幕上写入的统计数据的值,事情是,如果CharacterSlot
始终为1,它将只显示Helios的统计数据和不是我要创建的其他角色(最多3个)。
我该如何解决这个问题?
答案 0 :(得分:2)
这就是Sequence对象的用途。
CREATE SEQUENCE Test.CountBy1
START WITH 1
INCREMENT BY 1 ;
GO
CREATE TABLE Test.TestTable
(CounterColumn int PRIMARY KEY,
Name nvarchar(25) NOT NULL) ;
GO
INSERT Test.TestTable (CounterColumn,Name)
VALUES (NEXT VALUE FOR Test.CountBy1, 'Syed') ;
GO
SELECT * FROM Test.TestTable;
GO
https://msdn.microsoft.com/en-us/library/ff878370.aspx
您还可以在列的NEXT VALUE FOR
约束中使用DEFAULT
。
答案 1 :(得分:0)
因此,如果您希望每次使用重新启动重新计数,则需要执行此操作。注意命令文本如何为它想要查找的计数声明自己的参数。
CREATE Database Test1
GO
Use Test1
GO
CREATE TABLE TestTable
(CounterColumn int IDENTITY PRIMARY KEY,
Name nvarchar(25) NOT NULL,
SlotNumber INT NOT nULL,
UserId INT NOT NULL
)
GO
---- SQL Command Parameters----
Declare @Name nvarchar(25) = 'Tom';
Declare @UserId INT = 1;
----------------------- SQL Command Text------------
Declare @SlotNumber INT;
SELECT @SlotNumber = IsNull(Max(SlotNumber), 0) + 1 FROM TestTable WHERE UserId=@UserId;
INSERT INTO TestTable (Name, SlotNumber, UserId) VALUES (@Name, @SlotNumber, @UserId);
--------Check results -----------
SELECT * FROM TestTable