查询字符串数据绑定

本文关键字:数据绑定 字符串 查询 | 更新日期: 2023-09-27 18:22:18

当数据与我所拥有的查询字符串相同时,我正在尝试将数据绑定到标签。我一直在说一个错误。

必须声明标量变量"@YouthClubID"。

这是我的密码。

      using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Data;

namespace WebApplication1
{
    public partial class youthclubpage : System.Web.UI.Page
    {
        int YouthClubID;
       protected void Page_Load(object sender, EventArgs e)
        {
            using (SqlConnection sqlConnection = new SqlConnection("server = sql7.hostinguk.net; uid = joanton7865org7272_phelim; pwd = Armo32nk; database = joanton7865org7272_youthpodcast;"))
            {
                sqlConnection.Open();
                string strSQL = "Select youthclubname from youthclublist WHERE ([YouthClubID] = @YouthClubID)";
                using (SqlCommand sqlCommand = new SqlCommand(strSQL, sqlConnection))
                {
                    sqlCommand.Parameters.AddWithValue("@YouthClubID", Request.QueryString["club"]);
                    txtClubName.Text = sqlCommand.ExecuteScalar() + "";
                }
            }
        }
        }

    }

查询字符串数据绑定

正如其他人已经说过的那样,错误会发生,因为您没有填充SQL语句中定义的Parameter。

无论如何,您根本不需要Adapter,在您的情况下,ExecuteScalar方法就足够了:

using (SqlConnection sqlConnection = new SqlConnection("..."))
{
    sqlConnection.Open();
    string strSQL = "Select youthclubname from youthclublist WHERE ([YouthClubID] = @YouthClubID)";
    using (SqlCommand sqlCommand = new SqlCommand(strSQL, sqlConnection))
    {
        sqlCommand.Parameters.AddWithValue("@YouthClubID", Request.QueryString["club"]);
        txtClubName.Text = sqlCommand.ExecuteScalar() + "";
    }
}

在上面的例子中,我假设俱乐部ID被传递为page.aspx?club=[id here],这意味着查询字符串变量名称是"俱乐部",当然改为真实名称。

+ ""部分用于在数据库中没有匹配值的情况下放置空文本
当没有这样的值时,sqlCommand.ExecuteScalar()将返回null,其简单方式为:

txtClubName.Text = sqlCommand.ExecuteScalar().ToString();

在这种情况下会产生错误——通过添加空字符串,自动转换为字符串,看起来更漂亮。也可以看看这个问题。不用说,如果的值不是null,它就不会被更改。

SqlConnection sqlConnection = new SqlConnection("...");
SqlCommand command = new SqlCommand("Select youthclubname from youthclublist WHERE ([YouthClubID] = @YouthClubID)", sqlConnection);
command.Parameters.Add("@YouthClubID", SqlDbType.Int);
command.Parameters["@YouthClubID"].Value = clubID;
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(command);

您需要将参数添加到命令对象中。SqlDataAdapter,试试这个。a您只从db返回一个值,您可以使用ExecuteScalar方法

  SqlDataAdapter adapter = new SqlDataAdapter();
    // Create the SelectCommand.
    SqlCommand command = new SqlCommand(Select youthclubname from youthclublist WHERE ([YouthClubID] = @YouthClubID)", sqlConnection);
    // Add the parameters for the SelectCommand.
    command.Parameters.AddWithValue("@YouthClubID", yourYouthClubID);
    yourClubName = sqlCommand.ExecuteScalar();

您在SQL语句中使用了一个变量,您必须在C#代码中定义/设置该变量。

sqlConnection = new SqlConnection(<ConnectionString>);
sqlCommand = new _SQLCli.SqlCommand("Select youthclubname from youthclublist WHERE ([YouthClubID] = @YouthClubID)",sqlConnection);
            sqlCommand.Parameters
                         .Add(new _SQLCli.SqlParameter( "@YouthClubID", <neededValue>);)
            sqlDataAdapter = new SqlDataAdapter(sqlCommand);