C# 在Sql查询中使用.net控件

C# 在Sql查询中使用.net控件,c#,sql,.net,sql-server,C#,Sql,.net,Sql Server,我遇到的问题是,我试图根据当前登录的用户查询我的数据库。用户的值存储为appid.text和对象“Here”,但无论我做什么,我都无法获取查询以提取特定用户的信息。如果我删除“Where”子句,一切都可以工作,但它会为所有用户而不是一个用户提取数据。欢迎任何帮助 protected void Page_Load(object sender, EventArgs e) { string here = Membership.GetUser().ProviderUserKey.ToString

我遇到的问题是,我试图根据当前登录的用户查询我的数据库。用户的值存储为appid.text和对象“Here”,但无论我做什么,我都无法获取查询以提取特定用户的信息。如果我删除“Where”子句,一切都可以工作,但它会为所有用户而不是一个用户提取数据。欢迎任何帮助

protected void Page_Load(object sender, EventArgs e)
{
    string here = Membership.GetUser().ProviderUserKey.ToString();
    appid.Text = here;

    string connectionString =
        System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;

    // Create SQLDataSource.
    SqlDataSource sqlDataSource = new SqlDataSource();
    sqlDataSource.ID = "SqlDataSource123";
    this.Page.Controls.Add(sqlDataSource);
    // Bind ConnectionString to SQLDataSource.
    sqlDataSource.ConnectionString = connectionString;
    string query = "SELECT Nkey, AppID, Skey, ckey, quad, expyr FROM [dbo].[wallets]  WHERE appid = '" + Here + "' ";
    sqlDataSource.SelectCommand = query;
    // Bind SQLDataSource to GridView after retrieving the records.
    GridView1.DataSource = sqlDataSource;
    GridView1.DataBind();
}

首先,看看您的代码,您发送给SQL的AppId是一个字符串,在没有看到表模式的情况下,该列可能被定义为一个整数?如果它被定义为一个整数,那么查询就不需要周围的单引号,仅供参考

此外,您正在使用小写的“here”和大写的“here”,不确定这在许多编程语言中是否合适

如果我遇到同样的问题,我会首先让我的查询在SSMS中工作。接下来,我将通过断点或消息框抓取它发送给SQL的查询(将其复制粘贴到SSMS中),并在SSMS中执行该查询,以检查它是否返回了所需的数据


很可能您的查询不正确,或者您的代码没有正确创建查询,数据类型不匹配,等等。

这不是C代码。我假设它是C#,但不确定,请您自己添加正确的标记。Here变量的值是多少?如果
Here
是一个控件,您必须从中获取文本,可能需要使用
Here.text
@DanielMann成员身份如何。GetUser().ProviderUserKey将引入注入攻击?这看起来像是一个有效的查询。你不会说appid是哪种类型,但是如果它是一个足够大的
varchar
或者一个
uniqueidentifier
我看不出有什么问题。还考虑@ FEMBODBA的建议,并首先在SSMS中进行查询。如果您仍然有问题,我建议删除此问题,并使用以下内容创建一个新问题:(1)与上面类似的代码,但在
query
变量中修复
Here
vs
Here
,(2)表结构,(3)样本行,包括您希望返回的行,(4)
query
的值。