如何按用户 ID 选择和显示记录

本文关键字:显示 记录 选择 ID 何按 用户 | 更新日期: 2023-09-27 18:32:35

我有一个销售页面,用户在其中搜索并显示他或她的客户记录。我有多个用户将使用此页面。我的问题是如何创建页面,当用户登录时,它只会通过他或她的用户ID显示用户的记录。

我在下面应用了您的示例:

if(!IsPostBack)
    {
        Session["UserId"] = User.Identity.Name;
        // using (var connection = new SqlConnection("mtbase"))
        {
            string value = null;
            if (HttpContext.Current.User != null)
            {
                value = HttpContext.Current.User.Identity.Name;
            }
            else
            {
                value = HttpContext.Current.Request.LogonUserIdentity.Name;
            }
            var split = value.Split(new char[] { '''' });
            var UserId = split[split.Length - 1];
            using (var cmd = new SqlCommand("SELECT * FROM FixPrice WHERE UserId=@UserId", new SqlConnection("mtbase")))
            {
                // Add your parameter before opening the connection
                cmd.Parameters.AddWithValue("@UserId", UserId);
                // Open connection
                cmd.Connection.Open();
                using (var reader = cmd.ExecuteReader())
                {
                }
                cmd.Connection.Close();
            }
        }
    }
}

我的数据库表:

表名固定价格

Id int (主键(

日期数据时间

Admin nvarchar

类别 nvarchar

品牌瓦尔查尔

价格货币

数量浮子

总和钱

UserId int (FOREIGN KEY(

我仍然收到相同的错误:

初始化字符串的格式不符合从索引 0 开始的规范。

说明:执行当前 Web 请求期间发生未经处理的异常。请查看堆栈跟踪,了解有关错误及其在代码中起源位置的详细信息。

异常详细信息:System.ArgumentException:初始化字符串的格式不符合从索引 0 开始的规范。

源错误:

第 31 行:var split = 值。Split(new char[] { '''' }(;第 32 行:var UserId = split[split.长度 - 1];第 33 行:using (var cmd = new SqlCommand("SELECT * FROM FixPrice WHERE UserId=@UserId", new SqlConnection("Skyformatbase"(((第 34 行:{第 35 行://在打开连接之前添加参数

源文件: c:''Users''migold''Documents''Visual Studio 2013''网站''SKYAPP''DashBoard.aspx.cs行: 33

如何按用户 ID 选择和显示记录

让我们先关注一下:

         var query = "SELECT * FROM FixPrice WHERE UserName @Username";
         using (var command = new SqlCommand(query, connection))
         {
            // Open connection
            connection.Open();
            // Add your parameter 
            command.Parameters.AddWithValue("@Username", User.Identity.Name);
            using (var reader = command.ExecuteReader())

你的SQL需要说SELECT * FROM FixPrice WHERE UserName=@Username;

您省略了 =(等号(。

接下来,您正在读取用户名,而不是用户的用户名

然后,当然,您不会在任何地方关闭连接。可以用这种形式简化:

      string value = null;
      if (HttpContext.Current.User != null) {
        value = HttpContext.Current.User.Identity.Name;
      } else {
        value = HttpContext.Current.Request.LogonUserIdentity.Name;
      }
      var split = value.Split(new char[] { '''' });
      var userName = split[split.Length - 1];
      using (var cmd = new SqlCommand("SELECT * FROM FixPrice WHERE UserName=@UserName", new SqlConnection("mtbase")))
      {
         // Add your parameter before opening the connection
         cmd.Parameters.AddWithValue("@UserName", userName);
         // Open connection
         cmd.Connection.Open();
         using (var reader = cmd.ExecuteReader()) {
            ...
         }
         cmd.Connection.Close();
      }

我希望这有助于您走上正轨。

您可以将所有代码放在该页面的page_load事件中。

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
     //  Response.Write("<br>Page has been loaded first time.");
     //Read the user ID from session , asp.net membership or identity.
    // call database functions to read the record respect to that user and bind the 
list view , grid

    }
}