无法向SQL Server数据库添加内容c#

时间:2015-12-29 08:41:25

标签: c# sql database forms

在我的项目中,用户可以预订假期,当经理登录他们的帐户时,经理可以查看用户预订的假期。

当用户预订假期时,假日信息将转到我创建的数据库。在数据库中,我将主键设置为假日编号而不是用户ID,因为用户可以向数据库添加一个或多个假日。麻烦的是,假日编号始终为0。

这是我的数据库:

Database Image

正如您在数据库中看到的那样,假日编号为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);

2 个答案:

答案 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);