大家因该都知道使用C#连接数据库时,每次都要设置连接字符串、连接对象、以及开关闭等,非常的麻烦今天分享自己的几个方法:
一下的代码都可以写到一个类中,用到的时候直接调用一下非常简洁
1、连接sql数据库
class DBOperation
{
private static SqlConnection conn = null;//公用的连接对象
//打开数据库连接
public static SqlConnection GetConn()
{
try
{
if (conn == null)
{
conn = new SqlConnection(DBHelper.strConn);
}
conn.Open();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return conn;
}
}
2.关闭数据库连接
//关闭数据库连接
public static void CloseConn()
{
try
{
if(conn != null && conn.State != ConnectionState.Closed)
{
conn.Close();
}
conn = null;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
3.SqlCommand类的ExecuteScalar方法
public static object ExecuteScalar(string sql)
{
object obj = null;
try
{
GetConn();
SqlCommand comm = new SqlCommand(sql, conn);
obj = comm.ExecuteScalar();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
CloseConn();
}
return obj;
}
返回的是一个Object对象,直接转换为你想要的类型就行
4.ExecuteNonQuery方法
public static int ExecuteUpdate(string sql)
{
int result = -1;
try
{
GetConn();
SqlCommand comm = new SqlCommand(sql, conn);
result = comm.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
CloseConn();
}
return result;
}
5.关于DataReader对象最好不要直接返回,最好定义一个实体类,饭后返回一个实体类的对象数组:
例如:
public StudentEntity[] GetAllStudent()
{
StudentEntity[] students = null;
try
{
string sql = "select count(StudentNo) from Student";
int num = (int)DBOperation.ExecuteScalar(sql);
students = new StudentEntity[num];
SqlConnection conn = DBOperation.GetConn();
sql = "select StudentNo,StudentName,Sex from Student";
SqlCommand command = new SqlCommand(sql, conn);
SqlDataReader reader = command.ExecuteReader();
int i = 0;
while (reader.Read())
{
students[i++] = new StudentEntity()
{
StuNo = (string)reader["StudentNo"],
StuName=(string)reader["StudentName"],
Sex=(string)reader["Sex"]
};
}
reader.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
DBOperation.CloseConn();
}
return students;
}
这样得到一个学生数组,然后就可以进行相对应的一些操作!