using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//引入两个命名空间
using System.Data;
using System.Data.SqlClient;
namespace MyFriends
{
class DBHelper
{
//创建连接字符串
private const string connStr = @"Data Source=.;Initial Catalog=MySchool;Integrated Security=True";
/// <summary>
/// 查询第一行第一列内容的通用方法(cmd.ExecuteScalar)
/// </summary>
/// <param name="sql">查询用的sql</param>
/// <returns>第一行第一列内容,object通用类型:null(DB异常)、非null(DB无异常)</returns>
public object SelectOne(string sql)
{
//用来保存查询结果的第一行第一列内容
object obj = null;
//创建连接
SqlConnection conn = new SqlConnection(connStr);
//创建cmd对象,用来执行命令
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
//打开连接
conn.Open();
//cmd执行查询命令,并将第一行第一列内容保存到局部变量obj
obj = cmd.ExecuteScalar();
}
catch (Exception ex)
{
//输出异常
Console.WriteLine(ex.Message);
}
finally
{
//关闭连接
conn.Close();
}
//返回局部变量obj
return obj;
}
/// <summary>
/// 查询多行多列内容的通用方法(datareader)
/// </summary>
/// <param name="sql">查询用的sql</param>
/// <returns>datareader对象:null(DB异常)、非null(DB无异常)</returns>
public SqlDataReader SelectAll(string sql)
{
//用来保存查询结果,保存到dr中
SqlDataReader dr = null;
//创建连接
SqlConnection conn = new SqlConnection(connStr);
//创建cmd对象,用来执行命令
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
//打开连接
conn.Open();
//cmd执行查询ExecuteReader命令,返回多行内容并保存到局部变量dr
//调用该方法的地方,如果关闭datareader,将同时关闭连接
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
//输出异常
Console.WriteLine(ex.Message);
}
//返回局部变量dr
return dr;
}
/// <summary>
/// 增删改的通用方法(cmd.ExecuteNonQuery)
/// </summary>
/// <param name="sql">增删改用的sql</param>
/// <returns>受影响的行数:-1(DB异常)、0(增删改失败)、>0(增删改成功)</returns>
public int Update(string sql)
{
//用来保存执行增删改后受影响的行数
int result = -1;
//创建连接
SqlConnection conn = new SqlConnection(connStr);
//创建cmd对象,用来执行命令
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
//打开连接
conn.Open();
//cmd执行增删改命令,并将受影响的行数保存到局部变量result
result = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
//输出异常
Console.WriteLine(ex.Message);
}
finally
{
//关闭连接
conn.Close();
}
//返回局部变量result
return result;
}
//--------------------------------------------------------------------------------------
//用来保存查询结果,保存到ds中
DataSet ds = null;
//通用的数据适配器da
SqlDataAdapter da = null;
/// <summary>
/// 查询多行多列内容的通用方法(dataset)
/// </summary>
/// <param name="sql">查询用的sql</param>
/// <param name="tableName">将数据放入ds中的该表</param>
/// <returns>dataset对象:null(DB异常)、非null(DB无异常)</returns>
public DataSet DSSelectAll(string sql,string tableName)
{
//创建连接
SqlConnection conn = new SqlConnection(connStr);
//初始化ds
ds = new DataSet();
try
{
//创建数据适配器da
da = new SqlDataAdapter(sql, conn);
//da填充数据集ds,将数据填充到ds的tableName表中
da.Fill(ds,tableName);
}
catch (Exception ex)
{
//输出异常
Console.WriteLine(ex.Message);
}
//返回局部变量ds
return ds;
}
/// <summary>
/// 增删改的通用方法(SqlCommandBuilder)
/// 注意:sql必须满足单表+包含主键
/// </summary>
/// <param name="tableName">将ds中tableName表的数据更新到DB</param>
/// <returns>受影响的行数:-1(DB异常)、0(增删改失败)、>0(增删改成功)</returns>
public int DSUpdate(string tableName)
{
//用来保存执行增删改后受影响的行数
int result = -1;
try
{
//创建SqlCommandBuilder对象,已da作为参数
SqlCommandBuilder builder = new SqlCommandBuilder(da);
//将ds中tableName表的数据更新到DB
result=da.Update(ds, tableName);
}
catch (Exception ex)
{
//输出异常
Console.WriteLine(ex.Message);
}
//返回局部变量result
return result;
}
}
}