今天同学找我问asp.net的作业问题,他做的是一个图书馆管理的项目,然后想实现这样的一个功能,即有个图书清单页面,当点击清单中的书名时,会跳转到借书记录页面,然后会有一个用来输入学号的输入框,当输入学号并点击插入时,会自动生成一条包括书籍名,借书时间,学号,学生姓名,学生联系方式等在内的借书订单记录;
书籍名的生成很好做,直接通过请求字符串的Get方法拿到就行了,借书时间更简单,直接获取系统当前时间就行,就是如何获取姓名和联系方式难住了他,因为牵扯到要从另一张表(学生信息表)中拿到姓名和联系方式的值(而且要通过他输入的学号进行筛选);
其实我之前已经跟说过实现的逻辑了, 逻辑很简单,只需要在他插入学号这条信息时,拿到学号的值,然后连接数据库,与学生信息表里的学号做比对(where子句),读取表中拿到的姓名与联系方式的值,并将读取到的值赋给要插入的属性,这样就生成一张具有完整信息的借书记录了;
虽然逻辑上没什么问题,但是具体实现起来就涉及很多繁杂的细节了,所以一时难住了他,今天又找了问我,我也看了好几篇博客,虽然都是零零散散的技术细节,但是组合起来也让我成功将其实现,中间也碰到了几次异常,不过都是小问题,下面附上完整的后台实现代码。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
protected string shu( object sh) {
string shum = Request.QueryString.Get("书籍名");
return shum;
}
protected void Page_Load(object sender, EventArgs e)
{
}
protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e)
{
SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\图书馆信息数据库.mdf;Integrated Security=True;User Instance=True");
using(conn)
{
conn.Open();
//定义标量变量
SqlParameter[] mysqlpara1 = new SqlParameter[2];
mysqlpara1[0] = new SqlParameter("@uid", SqlDbType.NChar, 10);
mysqlpara1[0].Value = ((TextBox)this.DetailsView1.FindControl("TextBox2")).Text.Trim();
//获取到DetailsView中TextBox2的输入值
string uid = ((TextBox)this.DetailsView1.FindControl("TextBox2")).Text.Trim();
SqlCommand cmd = conn.CreateCommand();
//声明标量变量@uid
cmd.Parameters.AddWithValue("@uid",uid);
//构建查询语句
cmd.CommandText = "SELECT * FROM [Student] WHERE 学号 = @uid";
//读取查询到的值
SqlDataReader reader = cmd.ExecuteReader();
while(reader.Read())
{
string name = reader.GetString(reader.GetOrdinal("姓名"));
string tel = reader.GetString(reader.GetOrdinal("联系电话"));
//将读取到的值赋给要插入的属性
e.Values["姓名"] = name;
e.Values["联系方式"] = tel;
}
}
e.Values["借出时间"] = DateTime.Now;
e.Values["书籍名"] = Request.QueryString.Get("书籍名");
}
}
欢迎各位喜欢C#的网友学习交流!