Web实验三访问数据库160348冯晓红.docx
- 文档编号:24558130
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:13
- 大小:170.25KB
Web实验三访问数据库160348冯晓红.docx
《Web实验三访问数据库160348冯晓红.docx》由会员分享,可在线阅读,更多相关《Web实验三访问数据库160348冯晓红.docx(13页珍藏版)》请在冰豆网上搜索。
Web实验三访问数据库160348冯晓红
贵州大学实验报告
学院:
计算机科学与技术专业:
软件工程班级:
软件123
姓名
冯晓红
学号
1208060348
实验组
实验时间
2014-04-21
指导教师
王晓鹏
成绩
实验项目名称
实验3访问数据库
实验目的
1、熟练掌握ADO.NET的操作对象。
2、熟练运用数据访问技术对数据库进行操作。
实验要求
1、源程序清单。
2、程序运行结果。
3、调试过程中遇到的问题和解决的方法。
实验原理
ADO.NET数据库访问、程序设计
实验环境
Vs2010
实验步骤
1、在Sql2008中建立GuestBook数据库,并建立GuestBookInfo表格。
2、利用设计留言界面和查看留言界面
实验内容
(此处主要为功能的演示,具体后台代码见实验数据部分。
)
1、数据库建立:
1、留言部分:
1)界面布局:
2)留言功能:
2、查看留言部分:
1)界面布局
2)核心功能:
①数据绑定到GirdView并显示:
②数据的升序降序:
(可按编号、姓名、时间升降序,此处演示按编号降序)
③留言内容过长时以“…..”省略:
④查看留言功能:
点击某一行的查看连接,则可查看改行留言具体内容
实验数据
项目完整代码:
1、数据库访问:
(SqlHelper类)
此部分完整代码:
主要是使用了以前在其他课程设计的时候封装的SqlHelper类,这里列出几个用到的方法的核心代码:
1)在web.config文件里面添加连接字符串,然后在SqlHelper里面读取:
privatestaticstringconnectionString=ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
privatestaticstringdbName=ConfigurationManager.AppSettings["myDBName"];
2)基本的增、删、改功能:
publicstaticboolExecuteNonQuery(stringsql,Dictionary
{
SqlConnectioncon=newSqlConnection();
try
{
con.ConnectionString=connectionString;
if(con.State==System.Data.ConnectionState.Closed)
{
con.Open();
}
SqlCommandcmd=newSqlCommand();
cmd.Connection=con;
cmd.CommandText=sql;
if(parameters!
=null)
{
foreach(variteminparameters)
{
cmd.Parameters.AddWithValue(item.Key,item.Value);
}
}
//cmd.ExecuteNonQuery();
//返回受影响的行数
returncmd.ExecuteNonQuery()>0;
//returncmd.ExecuteNonQuery()>0;
}
catch(Exception)
{
throw;
}
finally
{
if(con.State==System.Data.ConnectionState.Open)
{
con.Close();
}
}
}
publicstaticboolExecuteNonQuery(stringsql)
{
returnExecuteNonQuery(sql,null);
}
3)得到DateTable的方法:
publicstaticDataTableGetDataTable(stringsql,Dictionary
{
SqlConnectioncon=newSqlConnection();
try
{
con.ConnectionString=connectionString;
//if(con.State==System.Data.ConnectionState.Closed)适配器会根据具体需要打开和关闭数据库
//{
//con.Open();
//}
SqlCommandcmd=newSqlCommand();
cmd.Connection=con;
cmd.CommandText=sql;
cmd.CommandType=System.Data.CommandType.Text;
if(parameters!
=null)
{
foreach(variteminparameters)
{
cmd.Parameters.AddWithValue(item.Key,item.Value);
}
}
SqlDataAdapterda=newSqlDataAdapter();//创建一个适配器,它¹会根据具体需要打开和关闭数据库
da.SelectCommand=cmd;
DataTabledt=newDataTable();
da.Fill(dt);
returndt;
}
catch(Exception)
{
throw;
}
}
publicstaticDataTableGetDataTable(stringsql)
{
returnGetDataTable(sql,null);
}
4)获取首行首列的值:
publicstaticobjectExecuteScalar(stringsql,Dictionary
{
using(SqlConnectioncon=newSqlConnection())
{
con.ConnectionString=connectionString;
if(con.State==System.Data.ConnectionState.Closed)
{
con.Open();
}
SqlCommandcmd=newSqlCommand();
cmd.Connection=con;
cmd.CommandText=sql;
if(parameters!
=null)
{
foreach(variteminparameters)
{
cmd.Parameters.AddWithValue(item.Key,item.Value);
}
}
objectr=cmd.ExecuteScalar();//返回查询结果表中首行首列的值returnr;
}
2、网页核心代码:
此部分完整代码:
1)留言按钮核心代码:
protectedvoidbtnSave_Click(objectsender,EventArgse)
{
if(txtMsg.Text==string.Empty||txtName.Text==string.Empty)
{
Response.Write("
}
else
{
stringsqlStr="InsertintoGuestBookInfovalues(@name,@details,@time,@back)";
System.Collections.Generic.Dictionary
parameters.Add("@name",txtName.Text);
parameters.Add("@details",txtMsg.Text);
parameters.Add("@time",DateTime.Now);
parameters.Add("@back",1);
boolresult=SMMS.Common.DBHelp.SqlHelp.ExecuteNonQuery(sqlStr,parameters);
if(result==true)
{
Response.Write("
btnReset_Click(null,null);
}
}
以下部分完整代码:
2)绑定数据核心代码:
privatevoidBind()
{
try
{
stringsqlStr="Select*fromGuestBookInfo";
System.Data.DataTabledt=SMMS.Common.DBHelp.SqlHelp.GetDataTable(sqlStr);
System.Data.DataViewdataView=dt.DefaultView;
stringsortStr=(string)ViewState["SortOrder"]+""+(string)ViewState["OrderDire"];//SortOrderbyanexpression
dataView.Sort=sortStr;
gdvMsgs.DataSource=dt;
gdvMsgs.DataKeyNames=newstring[]{"ID"};//主键
gdvMsgs.DataBind();
ShortMsg();
}
catch
{
Response.Write("");
}
}
3)升序降序核心代码:
protectedvoidgdvMsgs_Sorting(objectsender,GridViewSortEventArgse)
{
//之前在PageLoad的时候已经设置了:
ViewState["SortOrder"]="ID";ViewState["OrderDire"]="ASC";
stringsortExpresion=e.SortExpression;//排序依据
if(ViewState["SortOrder"].ToString()==sortExpresion)
{
if(ViewState["OrderDire"].ToString()=="DESC")//降序则升序,正序则变降序
ViewState["OrderDire"]="ASC";
else/
ViewState["OrderDire"]="DESC";
}
else
{
ViewState["SortOrder"]=sortExpresion;
}
Bind();
}
4)留言内容过长时以“省略”:
实际上就是在绑定数据源后,依次扫描过滤每一行数据。
protectedvoidShortMsg()
{
for(inti=0;i<=gdvMsgs.Rows.Count-1;i++)
{
if(gdvMsgs.Rows[i].Cells[5].Text.Length>msgMaxLength)
{
gdvMsgs.Rows[i].Cells[5].Text=gdvMsgs.Rows[i].Cells[5].Text.Substring(0,msgMaxLength)+"...";
}
}
}
5)查看留言功能:
protectedvoidgdvMsgs_SelectedIndexChanged(objectsender,EventArgse)
{
intindex=gdvMsgs.SelectedIndex;
stringid=gdvMsgs.Rows[index].Cells[2].Text;
txtID.Text=id;
txtName.Text=gdvMsgs.Rows[index].Cells[3].Text;
txtTime.Text=gdvMsgs.Rows[index].Cells[4].Text;
stringsqlStr="SelectDetailFromGuestBookInfoWhereID=@id";
Dictionary
parameters.Add("@id",id);
txtMsg.Text=SMMS.Common.DBHelp.SqlHelp.ExecuteScalar(sqlStr,parameters).ToString();
}
实验总结
这次实验不仅让我巩固了数据库的知识的同时还让我学习了VASP.NET的各种数据服务器控件的使用,以及网页布局的相关的DIV、CSS知识,对于现在的实验效果还不是很理想,所以以后一定要更加努力学习。
指导教师意见
签名:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Web 实验 访问 数据库 160348 冯晓红
![提示](https://static.bdocx.com/images/bang_tan.gif)