Web实验三访问数据库160348冯晓红资料.docx
《Web实验三访问数据库160348冯晓红资料.docx》由会员分享,可在线阅读,更多相关《Web实验三访问数据库160348冯晓红资料.docx(13页珍藏版)》请在冰豆网上搜索。
![Web实验三访问数据库160348冯晓红资料.docx](https://file1.bdocx.com/fileroot1/2022-11/16/20923028-854a-4948-bdad-55953d171933/20923028-854a-4948-bdad-55953d1719331.gif)
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,Dictionaryparameters)
{
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,Dictionaryparameters)
{
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,Dictionaryparameters)
{
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("alert('姓名或内容不能为空');");
}
else
{
stringsqlStr="InsertintoGuestBookInfovalues(@name,@details,@time,@back)";
System.Collections.Generic.Dictionaryparameters=newDictionary();
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("alert('留言成功');");
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(ViewStat