在我的项目中,用户可以预订假期,当经理登录他们的帐户时,经理可以查看用户预订的假期。
当用户预订假期时,假日信息将转到我创建的数据库。在数据库中,我将主键设置为假日编号而不是用户ID,因为用户可以向数据库添加一个或多个假日。麻烦的是,假日编号始终为0。
这是我的数据库:
正如您在数据库中看到的那样,假日编号为0,当用户预订假期时,它将不会添加到数据库中,因为假日编号为0。
每次用户预订假期时,我如何添加假日编号?
e.g。
50 Richard 27/02/15 29/02/15 Not reviewed 0
50 Richard 27/02/15 29/02/15 Not reviewed 1
50 Richard 27/02/15 29/02/15 Not reviewed 2
50 Richard 27/02/15 29/02/15 Not reviewed 3
我的代码:
string connectionString = con;
using (SqlConnection connection = new SqlConnection(connectionString))
{
int i = 0;
string setAuthorised = "Not reviewed";
SqlCommand cmd = new SqlCommand("INSERT INTO Holidays (Id, Firstname, Datefrom, Dateto, Authorised, HolidayNo) VALUES (@Id, @Firstname, @Datefrom, @Dateto, @Authorised, @HolidayNo)");
cmd.CommandType = CommandType.Text;
cmd.Connection = connection;
cmd.Parameters.AddWithValue("@Id", idTb.Text);
cmd.Parameters.AddWithValue("@Firstname", firstNameTb.Text);
cmd.Parameters.AddWithValue("@Datefrom", dateFromTb.Text);
cmd.Parameters.AddWithValue("@Dateto", dateToTb.Text);
cmd.Parameters.AddWithValue("@Authorised", setAuthorised);
cmd.Parameters.AddWithValue("@HolidayNo", i);
答案 0 :(得分:2)
创建数据库表时,您需要将该列标记为标识列。
下面的快速示例CREATE TABLE dbo.YourTable(
HolidayNumber INT NOT NULL IDENTITY(1,1),
--Other Columns here
)
通过添加IDENTITY(1,1)
部分,它告诉SQL Server增加1,从每个记录的1开始
答案 1 :(得分:2)
我假设你在sql server上。将您的假日ID列设为标识列。例如 -
CREATE TABLE YourHolidayTable
(HolidayNumber INT PRIMARY KEY IDENTITY(0,1),
--other columns
)
这将是最简单的解决方案.. 在您的代码中,您始终将0插入holidayNumber。在db identity insert中必须设置为true.just注释掉c#code
中的holidaynumber部分将col更改为标识后使用此代码 -
string connectionString = con;
using (SqlConnection connection = new SqlConnection(connectionString))
{
int i = 0;
string setAuthorised = "Not reviewed";
SqlCommand cmd = new SqlCommand("INSERT INTO Holidays (Id, Firstname, Datefrom, Dateto, Authorised) VALUES (@Id, @Firstname, @Datefrom, @Dateto, @Authorised)");
cmd.CommandType = CommandType.Text;
cmd.Connection = connection;
cmd.Parameters.AddWithValue("@Id", idTb.Text);
cmd.Parameters.AddWithValue("@Firstname", firstNameTb.Text);
cmd.Parameters.AddWithValue("@Datefrom", dateFromTb.Text);
cmd.Parameters.AddWithValue("@Dateto", dateToTb.Text);
cmd.Parameters.AddWithValue("@Authorised", setAuthorised);