ADO.NET连接sql数据库时几个方法的改良

大家因该都知道使用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;
        }

这样得到一个学生数组,然后就可以进行相对应的一些操作!

猜你喜欢

转载自blog.csdn.net/a1056373864/article/details/81133374