从数据表中获取值并将其传递给标签

Posted

技术标签:

【中文标题】从数据表中获取值并将其传递给标签【英文标题】:Get values from data table and pass it to label 【发布时间】:2021-06-19 18:41:06 【问题描述】:

我想在用户成功登录后获取FullName,并将他们的FullName 放入label

string conn = ConfigurationManager.ConnectionStrings["SystemDatabase"].ConnectionString;
SqlConnection sqlconn = new SqlConnection(conn);
sqlconn.Open();
string query = "Select * from UserAccount where Username = '" + txtUsername.Text.Trim() + "' and Password = '" + txtPassword.Text.Trim() + "'";
SqlDataAdapter sda = new SqlDataAdapter(query,sqlconn);
DataTable dt = new DataTable();
sda.Fill(dt);
if (dt.Rows.Count == 1) 

    FrmPOS frm = new FrmPOS();
    frm.Show();
    frm.lblCashierName.Text = ?//here i want to display the fullname from the UserAccount table.
    this.Hide();

我不知道如何从DataTable 获取数据。或者有没有其他方法可以做到?

【问题讨论】:

DataTable 由多行组成,您需要选择单个 DataRow 并在方括号中提及列名以获得您想要的文本。注意:您应该在 DataRow 中提及正确的给定 sql 列名请参阅this 这能回答你的问题吗? Get data from datatable into a string in asp.net SQL Injection alert - 你应该将你的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入 - 查看Little Bobby Tables 【参考方案1】:

您可以使用 dt.Rows[0]["FullName"].ToString() 从第一条记录中获取 FullName 列。

using (SqlConnection sqlconn = new SqlConnection (conn))

    sqlconn.Open();
    string query = "SELECT * FROM UseAccount WHERE Username = @Username AND Password = @Password";
    using (SqlCommand cmd = new SqlCommand(query, sqlconn)
    
        cmd.CommandType = CommandType.Text;
        cmd.Parameters.AddWithValue("@Username", txtUsername.Text.Trim());
        cmd.Parameters.AddWithValue("@Password", txtPassword.Text.Trim());
    
        using (SqlDataAdapter adp = new SqlDataAdapter(cmd))
        
            DataTable dt = new DataTable();
            adp.Fill(dt);
            if (dt != null || dt.Rows.Count > 0)
            
                FrmPOS frm = new FrmPOS();
                frm.Show();
                frm.lblCashierName.Text = dt.Rows[0]["FullName"].ToString();
                this.Hide();
            
        
    

无论如何,我想增强您的源代码以获得一些最佳实践

    将 using 块应用于 SqlConnection、SqlCommand 和 SqlDataAdapter。这样当每个进程结束时,using块就会执行Dispose来释放资源。 应用带有参数的 SqlCommand(也称为参数化查询),因为您可以通过将值连接到命令中来导致 SQL Injection。 检查 DataTable 以确保它有记录,然后才继续;旨在解决无数据返回时可能发生的NullReferenceException。

【讨论】:

【参考方案2】:

你可以试试这个

string conn = ConfigurationManager.ConnectionStrings["SystemDatabase"].ConnectionString;
SqlConnection sqlconn = new SqlConnection(conn);
sqlconn.Open();
string query = "Select * from UserAccount where Username = '" + txtUsername.Text.Trim() + "' and Password = '" + txtPassword.Text.Trim() + "'";
SqlCommand command = new SqlCommand(query,sqlconn);
SqlDataReader reader = command.ExecuteReader();

if (reader.Read() == true) 

    FrmPOS frm = new FrmPOS();
    frm.Show();
    frm.lblCashierName.Text = reader["FullName"].ToString();
    this.Hide();

【讨论】:

不客气@SimSim,但我忘了更改SqlCommand的变量名,应该是command,哈哈:) SQL Injection alert - 您应该将您的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入 - 查看Little Bobby Tables 是的,我同意@marc_s 的建议 @marc_s 是的,先生,我会用它制作一个stored procedure

以上是关于从数据表中获取值并将其传递给标签的主要内容,如果未能解决你的问题,请参考以下文章

将值从数据库传递到 vue 组件并将其分配给变量

从服务器获取数据并将值传递给 React 中的子组件(useEffect、useFetch..)

如何从文本字段中获取值并将其传递给变量?

从输入字段中获取一个值并将其传递给 Paypal

如何从文件标签中的hardisk获取那些选定文件并将其传递到另一个php函数中

如何从 Javascript 提示框中获取值并将其传递给 PHP 变量以便能够保存在 SQL 中?