请问这段基础代码(数据库连接并读取记录)如何优化?
string conStr = ConfigurationManager.AppSettings["ConnectionString"].ToString(); string sqlstr = "SELECT * FROM gameInfo where gameId=1"; SqlConnection myConnection = new SqlConnection(conStr); SqlCommand myCommand = new SqlCommand(sqlstr, myConnection); myConnection.Open(); SqlDataReader dr = myCommand.ExecuteReader(); //执行myCommand命令 if (dr.Read())//如果能读到记录 { labGameName.Text = dr["gameName"].ToString(); labGamePutTime.Text = dr["gamePutTime"].ToString(); labGameSize.Text = dr["gameSize"].ToString(); labGameContent.Text = dr["gameDescription"].ToString(); labGameOperate.Text = dr["gameOperate"].ToString(); labGameType.Text = dr["gameType"].ToString(); Image1.ImageUrl = dr["gamePic"].ToString(); ImageGameCut1.ImageUrl = dr["gameCutPic1"].ToString(); ImageGameCut2.ImageUrl = dr["gameCutPic2"].ToString(); ImageGameCut3.ImageUrl = dr["gameCutPic3"].ToString(); labRecommend.Text = dr["gameRecommend"].ToString(); } dr.Close();
labGamePutTime.Text = dr.getstring(1);
labGameSize.Text = dr.getstring(2);
labGameContent.Text = dr.getstring(3);
labGameOperate.Text = dr.getstring(4);
labGameType.Text = dr.getstring(5);
Image1.ImageUrl = dr.getstring(6);
ImageGameCut1.ImageUrl =dr.getstring(7);
ImageGameCut2.ImageUrl = dr.getstring(8);
ImageGameCut3.ImageUrl = dr.getstring(9);
labRecommend.Text = dr.getstring(10);
//这里修改其实意义不太大! (括号里的索引 是根据 查询时候字段排序的先后 从 0 开始算起!)
}
dr.Close();
}
[解决办法]
感觉楼主的已经挺好没什么可优化的了:
using(SqlConnection myConnection = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"])){ SqlCommand myCommand = new SqlCommand("SELECT * FROM gameInfo where gameId=1", myConnection); myConnection.Open(); using(SqlDataReader dr = myCommand.ExecuteReader()) { if (dr.Read())//如果能读到记录 { labGameName.Text = dr["gameName"].ToString(); labGamePutTime.Text = dr["gamePutTime"].ToString(); labGameSize.Text = dr["gameSize"].ToString(); labGameContent.Text = dr["gameDescription"].ToString(); labGameOperate.Text = dr["gameOperate"].ToString(); labGameType.Text = dr["gameType"].ToString(); Image1.ImageUrl = dr["gamePic"].ToString(); ImageGameCut1.ImageUrl = dr["gameCutPic1"].ToString(); ImageGameCut2.ImageUrl = dr["gameCutPic2"].ToString(); ImageGameCut3.ImageUrl = dr["gameCutPic3"].ToString(); labRecommend.Text = dr["gameRecommend"].ToString(); } }}
[解决办法]
这样应该就可以了,再注意以下关闭,释放就行了。
看着不好看,管用就行。
[解决办法]
如果不用!在 最后 读取完数据的时候 要自己 手动释放
dr.dispose(); dr.Close(); myconnection.dispose();
[解决办法]
用sqlhelp类,这样避免数据库频繁的开和关。
[解决办法]
开发大型系统的人,界面和数据操作是分离的,中间至少有一个数据模型作为中转。例如这个教程。
使用SqlDatasource不是纯粹的面向对象设计(它直接在业务处理模块中写死了访问具体的SQL Server数据库的代码),不过确实具有不少分层好处。
使用ObjectDatasource是纯粹面向对象设计的,但是他要求你自己有一套面向对象数据库接口用来在业务处理模块中调用,大多数人没有现成的面向对象数据库或者ORM工具。
当你的思路还仍然是SQL Server时,你使用SqlDataSource就很好,你可以将数据计算跟他的表现分开。