关于c#中连接sql server问题:command,datareader,dataadapter,
如题,command,command.executereader,executenonquery,datareader,dataadapter都什么作用,最好说的通俗一点...
如题,command,command.executereader ,executenonquery
,datareader,dataadapter都什么作用,最好说的通俗一点,能打个比方,初手,菜鸟,太理论化的解释听不懂 展开
,datareader,dataadapter都什么作用,最好说的通俗一点,能打个比方,初手,菜鸟,太理论化的解释听不懂 展开
3个回答
展开全部
这些都是ADO.NET里的基本对象。
command:用于执行各种命令,你可以给这个command赋上数据库连接和SQL
command.executereader ,返回一个可读的向前的数据集,读取大量数据时数据较快,取数据过程中缺点是数据库连接必须一直连着。
executenonquery:执行一个无返回的指令,比如insert、update、delete。这些操作其实也有返回,返回的是影响的行数,只是这个返回对我们来说没多大用处,所以一般认为这些操作是无返回的,和select相对。
datareader:command.executereader返回的对象
dataadapter:数据适配器,用于填充dataset、dataTable。即把数据库的数据查出来,存放到内存里。
给你个简单例子看看:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;
namespace Product.DA
{
public class DBAccess
{
/// <summary>
/// 数据库联接字符串
/// </summary>
private static readonly string ConnectString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static DataTable ExecuteDataTable(string sql)
{
DataTable dt = new DataTable();
dt.TableName;
SqlDataAdapter sda = new SqlDataAdapter(sql,ConnectString);
sda.Fill(dt);
if (dt.Rows.Count > 0)
{
return dt;
}
else
{
return null;
}
}
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static object ExecuteScalar(string sql)
{
SqlCommand cmd = null;
SqlConnection con = null;
try
{
cmd = new SqlCommand();
con = new SqlConnection(ConnectString);
cmd.Connection = con;
con.Open();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "sql";
return cmd.ExecuteScalar();
}
catch (Exception ex)
{
throw (new Exception("access database exception"));
}
finally
{
if (con != null)
{
con.Close();
}
}
}
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static int ExecuteNonQuery(string sql)
{
SqlCommand cmd = null;
SqlConnection con = null;
try
{
cmd = new SqlCommand();
con = new SqlConnection(ConnectString);
cmd.Connection = con;
con.Open();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "sql";
return cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw (new Exception("access database exception"));
}
finally
{
if (con != null)
{
con.Close();
}
}
}
}
}
command:用于执行各种命令,你可以给这个command赋上数据库连接和SQL
command.executereader ,返回一个可读的向前的数据集,读取大量数据时数据较快,取数据过程中缺点是数据库连接必须一直连着。
executenonquery:执行一个无返回的指令,比如insert、update、delete。这些操作其实也有返回,返回的是影响的行数,只是这个返回对我们来说没多大用处,所以一般认为这些操作是无返回的,和select相对。
datareader:command.executereader返回的对象
dataadapter:数据适配器,用于填充dataset、dataTable。即把数据库的数据查出来,存放到内存里。
给你个简单例子看看:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;
namespace Product.DA
{
public class DBAccess
{
/// <summary>
/// 数据库联接字符串
/// </summary>
private static readonly string ConnectString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static DataTable ExecuteDataTable(string sql)
{
DataTable dt = new DataTable();
dt.TableName;
SqlDataAdapter sda = new SqlDataAdapter(sql,ConnectString);
sda.Fill(dt);
if (dt.Rows.Count > 0)
{
return dt;
}
else
{
return null;
}
}
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static object ExecuteScalar(string sql)
{
SqlCommand cmd = null;
SqlConnection con = null;
try
{
cmd = new SqlCommand();
con = new SqlConnection(ConnectString);
cmd.Connection = con;
con.Open();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "sql";
return cmd.ExecuteScalar();
}
catch (Exception ex)
{
throw (new Exception("access database exception"));
}
finally
{
if (con != null)
{
con.Close();
}
}
}
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static int ExecuteNonQuery(string sql)
{
SqlCommand cmd = null;
SqlConnection con = null;
try
{
cmd = new SqlCommand();
con = new SqlConnection(ConnectString);
cmd.Connection = con;
con.Open();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "sql";
return cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw (new Exception("access database exception"));
}
finally
{
if (con != null)
{
con.Close();
}
}
}
}
}
展开全部
command 就是设置合适于数据源的操作命令,执行检索,编辑,或者是参数等数据操作,这些命令可以是SQL语句或者是数据库存储过程,比如:SqlCommand cmd=new SqlCommand (sql,conn)//sql表示语句 conn表示连接数据库;command.executereader是从数据源项应用程序执行读取,比如:前面的Command执行后Datareader dr= cmd.Excutereader() ,Datareader 就是执行高速只读,只向前的数据访问;Executenonquery返回执行后的影响行数 一般用int i =cmd.Executenonquery() ;DataAdapter就是数据适配器 执行Command 后从数据源中检索出的数据送往数据集,或者是将数据集编辑后送回数据源, 一般用Fill()方法调用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
datareader 每次只能读取一条数据
dataadapter 不限制读取的条数
dataadapter 不限制读取的条数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询