ExecuteNonQuery()
此方法通常情况下为数据库事务处理的首选,当需要执行插入、删除、修改(不能执行查询)等操作时,首选的就是ExecuteNonQuery()方法,该方法执行成功返回的是一受影响的行数,对于创建表(Create Table)和删除表(Drop Table)语句,返回值是0,而对于其他类型的语句,返回值是-1,因此在使用ExecuteNonQuery()操作数据时,可以不使用DataSet直接更改数据库中的数据。
返回受影响的行数
ExecuteScalar()
此方法与ExecuteNonQuery()方法并不同,ExecuteNonQuery()方法操作后返回的是一个值,而ExecuteScalar()方法返回的是一个对象,ExecuteScalar()方法的返回值的数据类型是object,如果执行的SQL语句是查询语句,则返回结果是查询后的第一行第一列,如果执行的SQL语句不是一个查询语句,则会返回一个未实例化的对象,必须通过类型装换类显示。
ExecuteReader()
通常情况下是使用该方法进行数据查询操作,使用ExecuteReader()查询数据能够提升查询效率,但是如果需要进行数据库事务处理的话,ExecuteReader()并不是一个理想的选择。
DataSet数据集插入记录,更新数据
使用Datase对象可以完成数据插入,为了将数据库的数据填充到datase中,则必须先使用adapter对象的方法实现填充,当数据填充完成后,开发人员可以将记录添加到dataset对象中,然后使用update方法将数据插入到数据库中。
分页查询
亲测OK 没问题
private static string ConnectionString = "Data Source=.;Initial Catalog=MISDB;User ID=sa;Password=123456";
DataTable data = new DataTable();
public Form1()
{
InitializeComponent();
data=MethodTwo(2,10);
Console.ReadKey();
}
private DataTable MethodTwo(int pageIndex, int pageNumber)
{
string sql = "select * from [Department] order by DepartmentId offset (@pageIndex-1)*@pageNumber rows fetch next @pageNumber rows only";
SqlParameter[] parameters = new SqlParameter[]
{
new SqlParameter("@pageIndex", pageIndex),
new SqlParameter("@PageNumber", pageNumber)
};
using (SqlDataAdapter adapter = new SqlDataAdapter(sql, ConnectionString))
{
adapter.SelectCommand.Parameters.AddRange(parameters);
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
adapter.SelectCommand.Parameters.Clear();
return dataTable;
}
}
private DataTable MethodTwo(int pageIndex, int pageNumber)
pageIndex 第几页
pageNumber 取几个数据