网格视图中的自定义 SQL

本文关键字:自定义 SQL 视图 网格 | 更新日期: 2023-09-27 17:57:03

如何使用编程代码将数据放入网格视图中?我需要一个包含变量的 SQL 语句:

"SELECT Mod_Naam, Mod_Omschrijving FROM Model WHERE Mod_ID = " + modid + " ", con

我尝试了向导,但我不能在其中使用变量,所以我必须使用编程代码(以前从未这样做过,不知道怎么做)

网格视图中的自定义 SQL

using (SqlConnection c = new SqlConnection(
    Properties.Settings.Default.DataConnectionString))
    {
    c.Open();
    // Create new DataAdapter
    using (SqlDataAdapter a = new SqlDataAdapter("SELECT Mod_Naam, Mod_Omschrijving FROM Model WHERE Mod_ID = @modid ", c))
    {
        a.SelectCommand.Parameters.AddWithValue("modid", "");
        // Use DataAdapter to fill DataTable
        DataTable t = new DataTable();
        a.Fill(t);
        // GridView1.DataSource = t; // <-- From your designer
    }
    }

你可以做类似的事情

    SqlConnection con = new SqlConnection("");//put connection string here
    SqlCommand objCommand = new SqlCommand("SELECT FirstName, LAstName from MyTable where FirstName = '" + "ABC" + "'", con);//let MyTable be a database table
con.Open();
    sqlDataReader dr = objCommandExecuteReader();
myGridView.DataSource = dr;//let myGridView be your GridView name
myGridView.DataBind();

首先,您需要以 GridView 可以处理的类型从数据库中获取数据。数据表就可以了。

下面的代码使用从查询检索的数据填充数据表"模型"。

// Assuming 'connection' is a valid connection to your database
string modid = "134"; // or int modid = 134;
string query = "SELECT Mod_Naam, Mod_Omschrijving 
                FROM Model 
                WHERE Mod_ID = " + modid;
SqlDataAdapter adapter = new SqlDataAdapter(query, connection);
DataSet models = new DataSet();
adapter.Fill(models , "Models");

接下来,您希望将数据附加到 GridView。如果只想在加载页面时加载数据,而不要在回发时加载数据,则可以将其放在页面的Page_Load和if(!Page.IsPostBack)区域中。

if (models.Tables.Count > 0)
{
    myGridView.DataSource = models;
    myGridView.DataBind();
}

请注意,最好使您的查询免受SQL注入的影响

有关运行安全查询的更多信息;我会向您推荐有关预准备语句的 MSDN 页面。