我现在在学asp.net 里面的连接数据sqldatareader 和sqldatatable 有什么区别啊
/// <summary>
/// 执行查询的方法
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
#region //实行查询的方法,不带参数的 使用datatable类型
public static DataTable selectdatable(string sql)
{
//连接数据库
using (SqlConnection conn = new SqlConnection(connString))
{
//适配器把sql语句传过去 把它翻译成c#的形式
SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
//new一个整体的表出来
DataTable dt = new DataTable();
//把适配器的sql语句执行的结果集放在表里面
sda.Fill(dt);
//返回一个表出去
return dt;
} }
#endregion #region //实行查询的方法,带参数的,使用datatable类型
public static DataTable selectdatable(string sql, SqlParameter[] sp)
{
//连接数据库
using (SqlConnection conn = new SqlConnection(connString))
{
//有参数使用sqlcommand来执行sql语句
SqlCommand cmd = new SqlCommand(sql, conn);
//不确定参数个数用数组有几个就循环加几个
foreach (SqlParameter item in sp)
{
//有参数得用到sqlcommadn带过去操作
cmd.Parameters.Add(item);
}
//用适配器把他转换成c#的语言执行结果
SqlDataAdapter sd = new SqlDataAdapter(cmd);
//new一张表出来放结果
DataTable dt = new DataTable();
//把结果放在表里面
sd.Fill(dt);
//返回一张表
return dt;
}
}
#endregion #region//实行查询的方法,不带参数的,使用SqlDataReader //之所以不用using关键字是因为在using里面的代码相当于一个类, //只有在那里面写得代码就会一直操作直到关闭,而sqldatareader是自动关闭的 所以不能写using关键字 public static SqlDataReader selectreader(string sql)
{
//连接数据库
SqlConnection conn = new SqlConnection(connString);
//打开数据库
conn.Open();
//执行sql语句
SqlCommand cmd = new SqlCommand(sql, conn);
//sqldatareader读取数据 是一行一行的读取,效率比较快但不怎么方便
//CommandBehavior.CloseConnection的方法中返回的SqlDataReader对象是否在关闭的同时自动关闭连接,
SqlDataReader sd = cmd.ExecuteReader(CommandBehavior.CloseConnection);
//返回数据库的数据
return sd;
}
#endregion #region //用sqldatareader查询数据 带参数的,使用sqldatareader //之所以不用using关键字是因为在using里面的代码相当于一个类, //只有在那里面写得代码就会一直操作直到关闭,而sqldatareader是自动关闭的 所以不能写using关键字
public static SqlDataReader selectreader(string sql, SqlParameter[] sp)
{
//连接数据库
SqlConnection conn = new SqlConnection(connString);
//打开数据库 因为下面要用到sqldatareader它会自动关闭 所以要打开连接
conn.Open();
//操作句柄执行sql语句
SqlCommand cmd = new SqlCommand(sql, conn);
//把参数放假去
foreach (SqlParameter item in sp)
{
cmd.Parameters.Add(item);
}
//sqldatareader读取数据 是一行一行的读取,效率比较快但不怎么方便
//CommandBehavior.CloseConnection的方法中返回的SqlDataReader对象是否在关闭的同时自动关闭连接,
SqlDataReader sd = cmd.ExecuteReader(CommandBehavior.CloseConnection);
//返回数据库的数据,一行一行的读取
return sd;
}
#endregion
我还是不是很理解他们两个的区别 上面的注释是我自己写上去的不知道对不对,各位给点指导
/// <summary>
/// 执行查询的方法
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
#region //实行查询的方法,不带参数的 使用datatable类型
public static DataTable selectdatable(string sql)
{
//连接数据库
using (SqlConnection conn = new SqlConnection(connString))
{
//适配器把sql语句传过去 把它翻译成c#的形式
SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
//new一个整体的表出来
DataTable dt = new DataTable();
//把适配器的sql语句执行的结果集放在表里面
sda.Fill(dt);
//返回一个表出去
return dt;
} }
#endregion #region //实行查询的方法,带参数的,使用datatable类型
public static DataTable selectdatable(string sql, SqlParameter[] sp)
{
//连接数据库
using (SqlConnection conn = new SqlConnection(connString))
{
//有参数使用sqlcommand来执行sql语句
SqlCommand cmd = new SqlCommand(sql, conn);
//不确定参数个数用数组有几个就循环加几个
foreach (SqlParameter item in sp)
{
//有参数得用到sqlcommadn带过去操作
cmd.Parameters.Add(item);
}
//用适配器把他转换成c#的语言执行结果
SqlDataAdapter sd = new SqlDataAdapter(cmd);
//new一张表出来放结果
DataTable dt = new DataTable();
//把结果放在表里面
sd.Fill(dt);
//返回一张表
return dt;
}
}
#endregion #region//实行查询的方法,不带参数的,使用SqlDataReader //之所以不用using关键字是因为在using里面的代码相当于一个类, //只有在那里面写得代码就会一直操作直到关闭,而sqldatareader是自动关闭的 所以不能写using关键字 public static SqlDataReader selectreader(string sql)
{
//连接数据库
SqlConnection conn = new SqlConnection(connString);
//打开数据库
conn.Open();
//执行sql语句
SqlCommand cmd = new SqlCommand(sql, conn);
//sqldatareader读取数据 是一行一行的读取,效率比较快但不怎么方便
//CommandBehavior.CloseConnection的方法中返回的SqlDataReader对象是否在关闭的同时自动关闭连接,
SqlDataReader sd = cmd.ExecuteReader(CommandBehavior.CloseConnection);
//返回数据库的数据
return sd;
}
#endregion #region //用sqldatareader查询数据 带参数的,使用sqldatareader //之所以不用using关键字是因为在using里面的代码相当于一个类, //只有在那里面写得代码就会一直操作直到关闭,而sqldatareader是自动关闭的 所以不能写using关键字
public static SqlDataReader selectreader(string sql, SqlParameter[] sp)
{
//连接数据库
SqlConnection conn = new SqlConnection(connString);
//打开数据库 因为下面要用到sqldatareader它会自动关闭 所以要打开连接
conn.Open();
//操作句柄执行sql语句
SqlCommand cmd = new SqlCommand(sql, conn);
//把参数放假去
foreach (SqlParameter item in sp)
{
cmd.Parameters.Add(item);
}
//sqldatareader读取数据 是一行一行的读取,效率比较快但不怎么方便
//CommandBehavior.CloseConnection的方法中返回的SqlDataReader对象是否在关闭的同时自动关闭连接,
SqlDataReader sd = cmd.ExecuteReader(CommandBehavior.CloseConnection);
//返回数据库的数据,一行一行的读取
return sd;
}
#endregion
我还是不是很理解他们两个的区别 上面的注释是我自己写上去的不知道对不对,各位给点指导
{
//存在下一条数据的时候读取
}
datatable是存的地方
sqldatareader是做饭
datatable是碗
数据是大米