c# - 数据未进入 datagridview

标签 c# sql sql-server datagridview

我正在使用 C# VS 2010 开发一个应用程序。

我有下面的代码来将带有某些名称的学生详细信息提取到数据 GridView 中。

var CommandText = @"SELECT sid as 'Student ID', name as 'Student Name', adDate as 
                  'Admission Date',
               paidFees as 'Fees Paid', balance as 'Fees Remaining'
                   FROM Student WHERE (status = '" + status + "') AND 
                   (name LIKE '%'+'"+txtSearchName.Text.Trim() + "'+'%')";
string select = CommandText;
            con.Open();
            SqlDataAdapter dataAdapter = new SqlDataAdapter(select, con); 

            SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
            DataSet ds = new DataSet();
            dataAdapter.Fill(ds);
            con.Close();
            dgvSearch.ReadOnly = true;
            dgvSearch.DataSource = ds.Tables[0];

我的问题是我只是获取表格的标题而不是像下面的屏幕截图这样的数据。 Search

这里出了什么问题?

最佳答案

我建议使用参数化查询。

var CommandText = @"SELECT sid as 'Student ID', name as 'Student Name', adDate as 
                  'Admission Date', paidFees as 'Fees Paid', balance as 'Fees Remaining'
                   FROM Student WHERE (status = @status) AND (name LIKE @stuname)";
string select = CommandText;
con.Open();
SqlDataAdapter dataAdapter = new SqlDataAdapter(select, con); 
dataAdapter.SelectCommand.Parameters.AddWithValue("@status", status);
dataAdapter.SelectCommand.Parameters.AddWithValue("@stuname", "%" + txtSearchName.Text.Trim() + "%");
SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
DataSet ds = new DataSet();
dataAdapter.Fill(ds);
....

通过这种方式,LIKE 语句的引号和通配符的字符串连接问题得到极大简化,并且可以避免细微的错误,例如 % 字符周围的引号错误。

当然,这会删除任何可能的 SQL Injection attack

关于c# - 数据未进入 datagridview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20828988/

相关文章:

c# - 错误 : C:\Program Files\dotnet\dotnet. exe 失败,返回代码:1

6 个月内下订单的客户数量的 SQL

c# - 将 .net decimal 类型转换为 tsql decimal(3,3)

java - 使用 JDBC 连接到 MSSQL 时出现 'unhandled token type: unknown token: 0x53' 错误

c# - 试试 Catch 或 If 语句?

c# - 从另一个 ViewModel Xamarin.Forms 更新 ViewModel

c# - 标签在 ToolStrip 上方不可见

对其自然语言描述的 SQL 查询

来自子查询的 MySQL GROUP_CONCAT

sql-server - 如何在 Angular 中将同步调用变成异步调用?