【发布时间】:2020-07-15 22:58:58
【问题描述】:
我一直在四处寻找,要么让自己感到困惑,要么没有找到正确的东西。
我有这个数据阅读器,它可以为存储过程提取一些信息。但我认为我做得不对。
string constr = ConfigurationManager.ConnectionStrings["PAYROLL"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("DLI_EMPLOYEE_PORTAL_EMPLOYEE_INFORMATION"))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@EID", Session["sessionEMPID"].ToString());
cmd.Connection = con;
con.Open();
SqlDataReader dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
while (dataReader.Read())
{
string EMP_FIRST = dataReader["FIRST_NAME"].ToString();
string EMP_LAST = dataReader["LAST_NAME"].ToString();
string EMP_DEPT = dataReader["DEPT"].ToString();
string EMP_DEPT_ID = dataReader["DEPT_ID"].ToString();
body = body + "<p>SUBMITTED BY : (" + Session["sessionEMPID"].ToString() + ") " + EMP_FIRST + " " + EMP_LAST + " - DEPT : " + EMP_DEPT + "</p> " + System.Environment.NewLine;
}
con.Close();
}
}
我只需要根据员工 ID 查询一行。我宁愿不通过存储过程,而是通过选择查询。
SELECT e.FIRST_NAME, e.LAST_NAME, e.DEPT_ID, d.NAME
FROM EMPLOYEE AS e
INNER JOIN DEPARTMENT AS d ON e.DEPT_ID = d.ID
WHERE (e.ID = 'sim01')
我正在构建一个 HTML 正文字符串,这就是我需要这些信息的原因。
body = body + "<p>SUBMITTED BY : (" + Session["sessionEMPID"].ToString() + ") " + EMP_FIRST + " " + EMP_LAST + " - DEPT : " + EMP_DEPT + "</p> " + System.Environment.NewLine;
非常感谢任何帮助。谢谢。
【问题讨论】:
-
您的代码看起来不错,但您应该阅读Can we stop using AddWithValue() already?
-
所以你想使用选择语句而不是存储过程。伟大的。是什么阻止你这样做?你试过了吗?您的实施出了什么问题?
-
数据读取器不是在循环吗?我想我正在寻找我喜欢的经典 ASP。
-
strSQLQuery = "...." Set MyRS = Server.CreateObject("ADODB.RecordSet") Set MyRS = dli.Execute(strSQLQuery) 'RESPONSE.WRITE "
last姓名:" & (MyRS("LAST_NAME"))
-
你有一个while循环,所以从技术上讲你有一个循环。如果只返回一行,那么它将通过循环一次。我建议您查看Dapper,它具有更好的语法来使用 ADO.NET。它可以让你做类似
var information = con.Query("your select command", new { EmployeeId = Session["sessionEMPID"].ToString()} ).SingleOrDefault());
标签: c# asp.net sql-server tsql webforms