我是一名新的ASP.NET開發人員,嘗試使用GridView控件顯示數據庫中employee表中的所有員工。我現在正在刪除GridView中任何員工的全部信息。我對着下面萬阿英,蔣達清,我不知道爲什麼:如何在此GridView中刪除員工的培訓記錄?
僅供參考,我有以下的數據庫設計:
Employee Table: Username, Name, JobTitle, BadgeNo, IsActive, DivisionCode
Divisions Table: SapCode, DivisionShortcut
Groups Table: GroupID, GroupName
Courses Table: CourseID, CourseName, GroupID
Employee_Courses Table: EmployeeID, CourseID
(IsActive就像是一個標誌(位數據類型),以當指示員工是否在任務中)
現在,我希望管理員能夠刪除員工,並刪除Employee_Courses表中已存在的所有培訓信息。 如何做到這一點?
我的查詢刪除:
DELETE employee where dbo.employee.Username = @Username
以及用於刪除記錄中的隱藏代碼如下:
protected void DeleteRecord(object sender, GridViewDeleteEventArgs e)
{
string networkID = GridView1.DataKeys[e.RowIndex].Value.ToString();
string connString = ConfigurationManager.ConnectionStrings["UsersInfoDBConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(connString);
string deleteCommand = "DELETE employee where dbo.employee.Username = " + networkID;
SqlCommand cmd = new SqlCommand(deleteCommand, conn);
cmd.Parameters.AddWithValue("@username", networkID);
try
{
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
catch (SqlException se)
{
throw se;
}
finally
{
cmd.Dispose();
conn.Close();
conn.Dispose();
}
GridView1.DataBind();
}
它非常適合誰沒有培訓記錄的員工,但它不適用於任何有培訓記錄的員工,它給我以下錯誤:
The DELETE statement conflicted with the REFERENCE constraint "FK_employee_courses_employee". The conflict occurred in database "UsersInfoDB", table "dbo.employee_courses", column 'employeeId'. The statement has been terminated.
那麼如何解決這個問題呢?
UPDATE:
FYI,用戶名是在EMPLOYEE表中的主鍵,和僱員ID是一個外鍵,它的主鍵。那麼我怎樣才能從Employee表中刪除員工,並將他所有的信息都放在其他表中。
您應該知道您的代碼易受SQL注入攻擊 – JohnnBlade 2012-07-10 06:46:02
您正在構建您的查詢,並且正在傳遞@UserName參數 – JohnnBlade 2012-07-10 06:47:58
employeeID是UserInfoDB中employee表的外鍵? – 2012-07-10 08:17:58