首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C# WinForm + SQL Server 2012:人員姓名轉換為編號存入福利表

     編輯:程式設計疑難解答

業務場景

人事管理系統中,員工福利表存儲員工編號(外鍵),但前端界面讓用戶選擇員工姓名。需在保存時將姓名轉換為對應編號。

實現方案

using (SqlConnection conn = new SqlConnection(connStr)) {
    conn.Open();
    // 根據姓名查詢編號
    string sql = "SELECT Id FROM Employee WHERE Name = @Name";
    using (SqlCommand cmd = new SqlCommand(sql, conn)) {
        cmd.Parameters.AddWithValue("@Name", txtEmployeeName.Text.Trim());
        object result = cmd.ExecuteScalar();
        if (result != null) {
            int empId = Convert.ToInt32(result);
            // 插入福利記錄
            string insertSql = "INSERT INTO EmployeeWelfare (EmpId, WelfareType, Amount) VALUES (@EmpId, @Type, @Amt)";
            using (SqlCommand insCmd = new SqlCommand(insertSql, conn)) {
                insCmd.Parameters.AddWithValue("@EmpId", empId);
                insCmd.Parameters.AddWithValue("@Type", cmbWelfareType.SelectedValue);
                insCmd.Parameters.AddWithValue("@Amt", txtAmount.Text);
                insCmd.ExecuteNonQuery();
            }
        } else {
            MessageBox.Show("未找到該員工");
        }
    }
}

關鍵點

  • 使用參數化查詢防止 SQL 注入。
  • `ExecuteScalar()` 直接獲取單一值(編號)。
  • 建議前端使用 `ComboBox` 綁定 `DataSource`,`DisplayMember="Name"`,`ValueMember="Id"`,直接取 `SelectedValue` 避免二次查詢。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved