从表中选择数据的最好方法是什么?

本文关键字:方法 是什么 选择 数据 | 更新日期: 2023-09-27 18:08:36

我在SQL Server 2008 R2中有一个数据库,表t包含列x,我设置了一个textBox来搜索TextChanged事件上的x值,一个datagridview来查看结果。

我的问题是:如果表t包含数千行,搜索x值的最佳方法是什么?

这个呢:

private void textBox_TextChanged(object sender, EventArgs e)
{
    tTableAdapter.Adapter.SelectCommand.CommandText = "select * from t where x like '" + textBox.Text + "%'";
    tTableAdapter.Fill(this.DS.t);
}

从表中选择数据的最好方法是什么?

假设你在谈论sql层-和你的过时的技术选择,应该很少使用,即数据适配器,忽略所有已经为。net做了过去10年没有其他选择-这是一个没有问题的,因为只有一种方法可以做到这一点,即通过使用sql语句选择表的字段,并有一个过滤条件。

现在,初学者可以这样做:

"select * from t where x='" + textBox。Text + "%'";

,并确保他是开放的任何SQL注入攻击。sql注入攻击是一件非常神秘的事情,大多数人都知道,你可以在谷歌上找到详细的信息(只要输入"sql注入攻击"或寻找"bobby tables"-一个很好的漫画解释它)。

下一步是使用更好的命令,通过使用一个参数,将确保你不能得到sql注入。

主要的问题是为什么你有SQL,而不使用任何SQL生成LINQ集成框架,以确保编译器捕捉到像表重命名这样的小事。一般来说,很少有使用任何类型的数据集有意义的情况(主要是:没有提示表在编译时是什么样子的通用报表生成器)。

但最后它都以特定的形式运行到SQL,所以这个问题根本不是一个问题。"数千行"是很小的数据。非常小

如果编写select命令,则创建一个新的通用SqlTableAdapter:

var da = new SqlDataAdapter("select * from t where x='" + textBox.Text + "%'", tTableAdapter.Connection);
da.Fill(this.DS.t);

但是建议编辑SelectCommand '在您的type - dataset中添加查询,然后:

tTableAdapter.Fill(this.DS.t, textBox.Text)

或:

tTableAdapter.FillBy(this.DS.t, textBox.Text)