从查询中获取数据并将结果放在标签中。

时间:2010-06-21 17:05:11

标签: asp.net

我想在源页面中输入徽章编号时使用员工姓名填充标签,但我不熟悉编程,也不知道如何解决这个问题。数据库连接已建立并且成功。你能帮助我吗?这只是一个时间表应用程序。

        string Badge = "100000" + Request.Form["xBadgeTextBox"];
        string Date = Request.Form["xWeekDropDownBox"];
        string Hours = Request.Form["xWlengthDropDownBox"];



        if (Badge != null)
        {

            string cmdquery = "SELECT EMPLOYEE_NAME FROM Employees WHERE Badge ='" + Badge + "'";

            OracleCommand cmd = new OracleCommand(cmdquery);
            cmd.Connection = conn;
            cmd.CommandType = CommandType.Text;


        }

2 个答案:

答案 0 :(得分:0)

看起来你走在正确的轨道上。但是,在你再进一步之前:

SANITIZE您的输入。

现在,您正在获取他们输入的用户数据,并将其直接放入您的查询中。如果他们输入10/10/2010'; DROP TABLE EMPLOYEE;',你会有很多解释要做!

好的,这样就可以了,你需要执行命令并绑定到结果(如果你需要修改任何东西,则迭代结果行)。所以代码看起来更像是这样:

        OracleCommand cmd = new OracleCommand(cmdquery);
        cmd.Connection = conn;
        cmd.CommandType = CommandType.Text;
        using (OracleDataReader reader = cmd.ExecuteReader()){
            while (reader.Read())
            {
                myLabel.Text += reader["EMPLOYEE_NAME"];
            }
        }

答案 1 :(得分:0)

你已经有了很多方面,虽然这里有几件事需要解决。

您不需要在ASP.NET中使用Request.Form语法,在那里您可以从表单上的控件中读取文本,您可以说:

string Badge = "1000000" + xBadgeTextBox.Text;

如果你检查Badge是否有值,它总是会有一个值,因为你在1000000前面加上文本框中输入的内容,可能你的意思是:< / p>

if (xBadgeTextBox.Text != String.Empty)

基于您已经编写的内容,您已经准备好了OracleCommand,您只需要在数据库上实际运行它。有很多方法可以做到这一点,主要的两种方法是使用DataReaderDataSet。使用DataReader,您可以从数据库中一次获得一行;使用DataSet,您可以在一次点击中获取查询中的所有行。但是在你的查询中,我猜你只希望从数据库返回一行只有一个字段,所以我们将使用第三种方法来获得标量(单个)值,而不是这些方法中的任何一种。

string cmdquery = "SELECT EMPLOYEE_NAME FROM Employees WHERE Badge ='" + Badge + "'";

OracleCommand cmd = new OracleCommand(cmdquery);
cmd.Connection = conn;
cmd.CommandType = CommandType.Text

// Open the connection to the database
conn.Open();

// Declare a variable to hold the employee name
string employeeName;

// ExecuteScalar returns an Object, so we need to cast it to a string
employeeName = (string)cmd.ExecuteScalar();

// Close the connection again
conn.Close();

// Write the employee name into the label on our page
EmployeeNameLabel.Text = employeeName;