2016-06-07 79 views
0

我有一個庫存界面的特定部分,需要員工從組合框中選擇他或她的名字,然後將產品掃描到分配給員工姓名的表格。C#編輯按鈕訪問數據庫

我的好奇心是:當打到EDITADDDELETE按鈕,它知道什麼表,在從交換機執行此功能 - 上面有該僱員姓名案例聲明。問題是,這段代碼對每個員工來說都很長,特別是對於9名員工,每個員工都有一個Switch - Case聲明。

有關如何簡化或縮短代碼的任何建議?我事先明白了我無法使用的參數化的SQL的。試圖首先完成這一點。

private void btnAdd_Click(object sender, EventArgs e) 
    { 
     ActiveControl = txtSerialN; 
     if (!string.IsNullOrEmpty(txtSerialN.Text) && !string.IsNullOrEmpty(cboEmpName.Text)) 

      switch (cboEmpName.SelectedItem.ToString().Trim()) 
      { 
       case "John Doe": 
        try 
        { 
         connection.Open(); 
         OleDbCommand command = new OleDbCommand(); 
         command.Connection = connection; 

         command.CommandText = "INSERT INTO JohnDoe(SerialNumber,PartNumber,DateEntered,Customer) values ('" + txtSerialN.Text + "','" + txtPart.Text + "','" + txtDate.Text + "','" + txtCustomer.Text + "')"; 
         command.ExecuteNonQuery(); 
         MessageBox.Show("Inventory Added".PadLeft(23)); 

         connection.Close(); 
         txtSerialN.Clear(); 
         txtPart.Clear(); 
         txtDate.Clear(); 
         txtCustomer.Clear(); 

         command.CommandText = "SELECT * FROM JohnDoe ORDER BY PartNumber"; 
         OleDbDataAdapter db = new OleDbDataAdapter(command); 
         DataTable dt = new DataTable(); 
         db.Fill(dt); 
         dataGridEmpParts.DataSource = dt; 
        } 

        catch (OleDbException) 
        { 
         string strmsg = "THIS SERIAL NUMBER ALREADY EXISTS ! , Please try again"; 
         MessageBox.Show(strmsg, "YOU CAN'T ENTER THE SAME ONE AGAIN", MessageBoxButtons.OK, 
         MessageBoxIcon.Exclamation, 
         MessageBoxDefaultButton.Button1); 
         connection.Close(); 
        } 
        break; 
      } 
    } 
+1

**警告**您的代碼非常容易受到SQL注入攻擊 –

+0

是的......我知道。這是一個由9個人使用的本地接口,他們對嘗試破解接口沒有興趣。 – CamlCase

+0

請驗證我你的實際問題是? 「問題是,這段代碼對於每個員工來說都很長,特別是對於每個員工都有一個Switch-Case聲明的9名員工。」 –

回答

1

我寧願忍受,將有諸如EmployeeName,AssignedTable列和動態構建基於參數值在CommandText的查找表。

0

我懷疑這個問題可以通過修改數據庫來更有效地解決。也許就像爲員工姓名添加字段一樣簡單。