我想响应。在插入我的数据库之后写入字段“requestDate”的值。我执行SQL插入后,我有一个“select requestDate ...”语句,但我似乎无法让网页看到它。
我尝试过:Response.Write(dt.Rows[0]["requestDate"].ToString());
但是我收到一条错误,指出“requestDate”不属于该表。 requestDate不是我的参数之一,但希望插入后我选择的选项允许我使用它。
实现这一目标的最佳方法是什么?谢谢!
dataAccess.cs:
public static SqlConnection DEV
{
get
{
return new SqlConnection(ConfigurationManager.ConnectionStrings["DEV"].ConnectionString);
}
}
public static DataTable ExecuteDataTable(string storedProcedureName, SqlConnection connection, params SqlParameter[] sqlParams)
{
SqlCommand command = new SqlCommand(storedProcedureName, connection);
DataSet returnSet = new DataSet();
if (sqlParams != null)
command.Parameters.AddRange(sqlParams);
command.CommandType = CommandType.StoredProcedure;
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = command;
adapter.Fill(returnSet);
connection.Close();
if (returnSet.Tables.Count > 0)
{
return returnSet.Tables[0];
}
return null;
}
执行插入的页面后面的代码:
DataTable dt = new DataTable();
dt = dataAccess.ExecuteDataTable
(
"spInsert", dataAccess.DEV, new SqlParameter[2]
{
new SqlParameter ("@vRecID", hidIDs.Value),
new SqlParameter ("@vTransDate", txtTransDate.Text)
}
);
Response.Write(dt.Rows[0]["requestDate"].ToString());
标记页:
<asp:HiddenField runat = "server" ID = "hidIDs" />
<asp:TextBox ID="txtTransDate" runat="server"></asp:TextBox>
SQL:
Insert Into Requests
(
transDate,
requestDate
)
Values
(
@vTransDate,
getDate()
)
Select recID = SCOPE_IDENTITY()
Select requestDate from Requests
Where recID = @vRecID
答案 0 :(得分:0)
你可以尝试返回&#34; returnSet.Tables [1]&#34; (下一个表)而不是&#34; returnSet.Tables [0]&#34;。 您的SQL有两个select语句,数据适配器可以用两个表填充数据集。
答案 1 :(得分:0)
“RequestDate不是参数”,这不是问题。您将返回包含requestDate列的select的结果,因此它应该在您的数据表中。我没有尝试重现你的代码,所以我不知道什么是bug,但你要做的是一种过时的访问数据的方式,最简单的复杂。
ORM是对象关联映射。一个简单的强类型ADO.net数据集也可能是好的(它生成yor返回实体)。因此,有两种简单的方法可以在c#中投射SQL结果。
ADO.Net strongly-typed dataset
这是一个实体框架教程(这是一个ORM):