关于c#中连接sql server问题:command,datareader,dataadapter,

2025-01-06 10:44:16
推荐回答(3个)
回答1:

这些都是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
{
///


/// 数据库联接字符串
///

private static readonly string ConnectString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

///
///
///

///
///
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;
}
}
///
///
///

///
///
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();
}
}
}
///
///
///

///
///
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();
}
}
}
}
}

回答2:

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()方法调用。

回答3:

datareader 每次只能读取一条数据
dataadapter 不限制读取的条数