日期:2014-05-19  浏览次数:20377 次

新手提问,如何显示数据效率才高?
有很多时候,我需要查询出数据库里的数据,但是有时候并不是读很多条,也不是循环读取,只读取一条数据,甚至一张表里面的一个字段,我想知道该怎么样读取才能提高效率,最好有代码啊,使用什么控件读取呢?我以前都是用的Repeater控件...

------解决方案--------------------
up
------解决方案--------------------
你需要什么数据就读取什么数据阿
不要取对当前业务无效的数据
repeater是呈现的控件,不负责从数据库中取数据把
最终取,也是你自己的sql语句取出来,绑定到他上面去
------解决方案--------------------
写查询语句的时候限定好条件 比如要搜的字段 符合条件的 Where子句 还有order by 排序
还有要查寻的条数 Top ?
------解决方案--------------------
sqlhepler 中有返回OBJECT的方法也有返回DATASET的方法
------解决方案--------------------
/// <summary>
/// 执行一条返回第一条记录第一列的SqlCommand命令,通过专用的连接字符串。
/// 使用参数数组提供参数
/// </summary>
/// <remarks>
/// 使用示例:
/// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders ", new SqlParameter( "@prodid ", 24));
/// </remarks>
/// <param name= "connectionString "> 一个有效的数据库连接字符串 </param>
/// <param name= "commandType "> SqlCommand命令类型 (存储过程, T-SQL语句, 等等。) </param>
/// <param name= "commandText "> 存储过程的名字或者 T-SQL 语句 </param>
/// <param name= "commandParameters "> 以数组形式提供SqlCommand命令中用到的参数列表 </param>
/// <returns> 返回一个object类型的数据,可以通过 Convert.To{Type}方法转换类型 </returns>
public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText,
params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();

using (SqlConnection connection = new SqlConnection(connectionString))
{
PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
object val = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return val;
}
}

/// <summary>
/// 为执行命令准备参数
/// </summary>
/// <param name= "cmd "> SqlCommand 命令 </param>
/// <param name= "conn "> 已经存在的数据库连接 </param>
/// <param name= "trans "> 数据库事物处理 </param>
/// <param name= "cmdType "> SqlCommand命令类型(StoredProcedure,TableDirect和Text) </param>
/// <param name= "cmdText "> Command text,T-SQL语句 例如 Select * from Products </param>
/// <param name= "cmdParms "> 返回带参数的命令 </param>
private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType,
string cmdText, SqlParameter[] cmdParms)
{
//判断数据库连接状态
if (conn.State != ConnectionState.Open)
conn.Open();

cmd.Connection = conn;
cmd.CommandText = cmdText;

//判断是否需要事物处理
if (trans != null)
cmd.Transaction = trans;

cmd.CommandType = cmdType;

if (cmdParms != null)
{
foreach (SqlParameter parm in cmdParms)
cmd.Parameters.Add(parm);
}
}
------解决方案--------------------
数据访问层就用sqlhelper吧
具体的事情,就要具体处理了。

可以在以下几方面进行处理
1.sql语句
2.使用存储过程
3.业务处理与分布读取数据