2017-02-20 25 views
0
Connection.Open(); 
    SqlCommand Command = new SqlCommand(null, Connection); 
    Command.CommandText = "Insert into [EmployeeTable] (Forename,Surname,DateofBirth,Email address,Country,Address,City,Postcode,Skill1,Skill2,Skill3,Job1,Job 2,Job3,EmployeeAvailability) Values(@forename, @surname, @dateofbirth, @emailaddress, @phonenumber, @country, @address, @city, @postcode, @skill1, @skill2, @skill3, @job1, @job2, @job3, @employeeavailability)"; 
    Command.Parameters.AddWithValue("@forename", ForenameInputBox.Text); 
    Command.Parameters.AddWithValue("@surname", SurnameInputBox.Text); 
    Command.Parameters.AddWithValue("@dateofbirth", DoBInputBox.Text); 
    Command.Parameters.AddWithValue("@emailaddress", EmailInputBox.Text); 
    Command.Parameters.AddWithValue("@country", CountryInputBox.Text); 
    Command.Parameters.AddWithValue("@address", AddressInputBox.Text); 
    Command.Parameters.AddWithValue("@city", CityInputBox.Text); 
    Command.Parameters.AddWithValue("@postcode", PostcodeInputBox.Text); 
    Command.Parameters.AddWithValue("@skill1", Skill1InputBox.Text); 
    Command.Parameters.AddWithValue("@skill2", Skill2InputBox.Text); 
    Command.Parameters.AddWithValue("@skill3", Skill3InputBox.Text); 
    Command.Parameters.AddWithValue("@job1", Job1InputBox.Text); 
    Command.Parameters.AddWithValue("@job2", Job2InputBox.Text); 
    Command.Parameters.AddWithValue("@job3", Job3InputBox.Text); 
    Command.Parameters.AddWithValue("@employeeavailability", EmployeeAvailablityBox.Text); 
    Command.ExecuteNonQuery(); 
    Connection.Close(); 
} 

}C#Visual Studioでフィールドを自動入力する方法は?

CREATE TABLE [dbo].[EmployeeTable] (
[EmployeeID]   INT   NOT NULL, 
[Forename]    NVARCHAR (50) NOT NULL, 
[Surname]    NVARCHAR (50) NOT NULL, 
[DateofBirth]   DATETIME  NOT NULL, 
[Emailaddress]   NVARCHAR (50) NOT NULL, 
[Country]    NVARCHAR (50) NOT NULL, 
[Address]    NVARCHAR (50) NOT NULL, 
[City]     NVARCHAR (50) NOT NULL, 
[Postcode]    NVARCHAR (50) NOT NULL, 
[Skill1 ]    NVARCHAR (50) NOT NULL, 
[Skill2]    NVARCHAR (50) NOT NULL, 
[Skill3]    NVARCHAR (50) NOT NULL, 
[Job1]    BIT   NOT NULL, 
[Job2]    BIT   NOT NULL, 
[Job3]     BIT   NOT NULL, 
[EmployeeAvailability] BIT   NOT NULL, 
PRIMARY KEY CLUSTERED ([EmployeeID] ASC) 

)。

従業員の詳細を保存するテーブルを作成しましたが、入力を保存しようとするとエラーメッセージが表示されます。 エラーメッセージは次のとおりです。

'System.Data.SqlClient.SqlException'型の未処理の例外がSystem.Data.dllで発生しました追加情報: 'EmployeeID'列、 'C'列にNULL値を挿入できません:¥USERS¥USER¥DOCUMENTS¥VISUAL STUDIO 2015¥PROJECTS¥WPFAPPLICATION¥WPFAPPLICATION1¥EMPLOYEEDB.MDF. dbo.EmployeeTable ';列はNULLを許可しません。 INSERTは失敗します。ステートメントが終了しました

これは、EmployeeIDフィールドに値が入力されていないためと思われますので、毎回新しい従業員IDが生成され、フィールドに値が設定されるようにするにはどうすればよいですかエラーメッセージの原因?

答えて

0

標準的なアプローチは、カラムIDENTITY列を作ることである。

[EmployeeID] INT IDENTITY(1,1), 

、データベースが自動的に各インサートと番号を生成します。これにより、一意性が保証されるという追加の利点があります。この列は、主キーとしても使用されるため、重要です。 IDENTITYは常に増加する値なので、CLUSTEREDインデックスもかなりうまくいくでしょう。

+0

これはうまくいきました。ありがとうございました。 –

関連する問題