Hallo semua, salam kenal
Saya sedang mengembangkan aplikasi Client Server sederhana, menggunakan C# DataGridView dan terkoneksi ke SQL Server. Dibawah ini adalah 2 jenis kode yang di gunakan, kode pertama berfungsi dengan baik, sedangkan kode kedua tidak berhasil mengembalikan result untuk di tampilkan di DataGridView ( data kosong ).
///---- start kode pertama ----
/// kode yang berhasil di jalankan, menggunakan string.format
/*
string selectString = string.Format("SELECT employee.BarcodeID as 'Staff ID', " +
"employee.FirstName as 'First Name', " +
"employee.LastName as 'Last Name', " +
"employee.Preferred as 'Prefered', " +
"h_employee.Emp_AktifYN as 'Active' " +
"FROM employee, h_employee " +
"WHERE employee.BarcodeID=h_employee.Emp_ID " +
"AND h_employee.Emp_AktifYN='Y' " +
"AND employee.{0} like '%{1}%' " +
"ORDER BY employee.BarcodeID ASC", filterCategory,txtFilter.Text );
SqlCommand mySqlCommand = new SqlCommand(selectString, mySqlConnection);
*/
///---- end kode pertama ----
///---- start kode kedua ----
///kode yang di jalankan menggunakan SQLCommand.Parameters
string selectString = "SELECT employee.BarcodeID as 'Staff ID', " +
"employee.FirstName as 'First Name', " +
"employee.LastName as 'Last Name', " +
"employee.Preferred as 'Prefered', " +
"h_employee.Emp_AktifYN as 'Active' " +
"FROM employee, h_employee " +
"WHERE employee.BarcodeID=h_employee.Emp_ID " +
"AND h_employee.Emp_AktifYN='Y' " +
"AND @filterCategory like '@filterText' " +
"ORDER BY employee.BarcodeID ASC";
SqlCommand mySqlCommand = new SqlCommand(selectString, mySqlConnection);
mySqlCommand.Parameters.Add("@filterCategory", SqlDbType.VarChar,50);
mySqlCommand.Parameters.Add("@filterText", SqlDbType.VarChar,50);
mySqlCommand.Parameters["@filterCategory"].Value = "employee." + filterCategory;
mySqlCommand.Parameters["@filterText"].Value = "%" + txtFilter.Text + "%";
///---- end kode kedua ----
SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter();
mySqlDataAdapter.SelectCommand = mySqlCommand;
DataSet myDataSet = new DataSet();
mySqlConnection.Open();
string dataTableName = "Type";
mySqlDataAdapter.Fill(myDataSet, dataTableName);
DataTable myDataTable = myDataSet.Tables[dataTableName];
//BindingSource to sync DataTable and DataGridView
BindingSource bSource = new BindingSource();
//set the BindingSource DataSource
bSource.DataSource = myDataTable;
//set the DataGridView DataSource
dataGridView1.DataSource = bSource;
mySqlConnection.Close();
Apakah kode kedua harus di ubah cara binding datanya, dan apa yang harus di tambahkan? Kemudian apakah dengan memakai String.Format dan atau SQLCommand.parameters telah cukup untuk menghalangi SQL inject?
Terima kasih atas masukannya.