我正在尝试将数据绑定到标签,因为它与我拥有的查询字符串相同。 我一直在说错误。
必须声明标量变量" @ 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() + "";
}
}
}
}
}
答案 0 :(得分:3)
正如其他人所说的那样,错误发生了,因为你没有填充SQL语句中定义的参数。
无论如何,您根本不需要适配器,在您的情况下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]
,意味着查询字符串变量名称为“club”,当然更改为真实姓名。
+ ""
部分用于放置空文本,以防数据库中没有匹配值
如果没有此类值,sqlCommand.ExecuteScalar()
将返回 null - 具有以下简单方式:
txtClubName.Text = sqlCommand.ExecuteScalar().ToString();
在这种情况下会生成错误 - 通过添加空字符串,转换为字符串会自动发生并且看起来更漂亮。另见this question。不用说,如果值不为空,则不会更改。
答案 1 :(得分:0)
您在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);
答案 2 :(得分:0)
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);
答案 3 :(得分:0)
您需要将参数添加到命令对象中。 SqlDataAdapter, 试试这样。如果只从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();