【发布时间】:2011-03-17 19:11:43
【问题描述】:
我目前正在使用 DataSet 处理 MySQL 数据库。问题是它使用了大量的内存(正如我在网上的某个地方发现的那样,它使用了几乎 4 倍的内存,而不是使用 DataReader 时)。 我的想法是创建一个将 DataReader 用于 SQL SELECT 命令的函数。
我现在想到的是(例子):
public void GetData(string name,string surname, string company)
{
string selectCommand="";
selectCommand += "SELECT * FROM thetable ";
if (txtName.Text!="" || txtSurname.Text!="" || txtCompany.Text!="")
selectCommand += "WHERE ";
if (txtName.Text!="")
selectCommand += "name=" + txtName.Text+ " ";
if (txtSurname.Text!="")
selectCommand += "surname=" + txtSurname.Text + " ";
if (txtCompany)
selectCommand += "company=" + txtCompany.Text + " ";
MySqlDataAdapter dataAdapter = new MySqlDataAdapter(selectCommand+";",conn);
///etc...
}
但我觉得这是一种错误的方式。首先,我没有使用参数。第二件事是它看起来有点脏。 谁能给点建议。
【问题讨论】:
-
这当然是等待发生的SQL注入攻击.....
-
感谢您指出这一点!如果我做这样的事情会更好吗? if (txtName.Text!="") { selectCommand.CommandText += "name=@name"; selectCommand.Parameters.Add("@name",txtName.Text); }
-
是的,这样会更好。始终清理您的输入!
标签: c# mysql dataset datareader