public static void fillCheckList(string ListType,int RecordNum,CheckBox chkRequired,TextBox txtComplete,TextBox txtMemo)
{
string sql_Check = String.Format(@"SELECT l.Required,l.Completed,l.ISP,l.Memo_Notes,
t.List_Desc
FROM List_Data l, List_Type t
WHERE l.List_ID = t.List_ID
AND l.Record_Num = {0}
AND t.List_Desc = '{1}'", RecordNum,ListType);
ListData LIST = new ListData();
SqlConnection sqlConn = null;
SqlCommand cmd_Check;
SqlDataReader dr_Check;
try
{
sqlConn = new SqlConnection(databaseConnectionString);
sqlConn.Open();
cmd_Check = new SqlCommand(sql_Check, sqlConn);
dr_Check = cmd_Check.ExecuteReader();
while (dr_Check.Read())
{
LIST = new ListData(Convert.ToBoolean(dr_Check["Required"]), dr_Check["Completed"].IsNull() ? (DateTime?)null : Convert.ToDateTime(dr_Check["Completed"]), dr_Check["Memo_Notes"].ToString());
}
chkRequired.Checked = LIST.REQUIRED;
txtComplete.Text = LIST.COMPLETED.HasValue ? LIST.COMPLETED.Value.ToShortDateString() : "";
txtMemo.Text = LIST.MEMO_NOTES;
}
catch (Exception e)
{
MessageBox.Show("Error found in fillCheckList..." + Environment.NewLine + e.ToString());
}
finally
{
if (sqlConn != null)
{
sqlConn.Close();
}
}
}
正如你所看到的,我爲項目id,列表類型的字符串變量和2文本框類型取一個整數變量。 我因此使用這種方法來接受4個參數..我想要做的是我也希望它接受5個參數。那就是..再包含一個文本框.. ,這樣它可以接受4個參數或相應的5個參數/ 我該怎麼做同樣的方法。單一方法接受3個參數或4個參數
使用SqlDataParameters !!! – Andrey 2010-03-05 14:32:04
您有一個SQL注入漏洞。 **你需要使用參數** – SLaks 2010-03-05 14:34:34
答案中也有參數,但這些人正在談論一種不同類型的參數(你可能不知道)。 將您的sql字符串更改爲使用@RecordNum和@ListType,而不是使用{0}和{1}。接下來,在SqlCommand對象中,像這樣插入參數:cmd.Parameters.Add(「@RecordNum」,System.Data.SqlDbType.Int).Value = RecordNum; – apandit 2010-03-05 14:49:11