我想在源页面中输入徽章编号时使用员工姓名填充标签,但我不熟悉编程,也不知道如何解决这个问题。数据库连接已建立并且成功。你能帮助我吗?这只是一个时间表应用程序。
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;
}
答案 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,您只需要在数据库上实际运行它。有很多方法可以做到这一点,主要的两种方法是使用DataReader或DataSet。使用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;