解决方案 »

  1.   

    弄个sqlhelper,把数据库的操作都放里面
      

  2.   

    C# 传统的链接数据库有Ado.net ,msdn 上有demo ,请搜索一下进行参考。
      

  3.   

    去百度下个Dbhelper类吧,然后做一个配置文件,连接字符串放到里面。通过读取配置文件来做处理
      

  4.   


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    //引入数据库操作的命名空间
    using System.Data;//DataSet,DataTable
    using System.Data.SqlClient;//SqlConnection,SqlCommand,SqlDataReader,SqlDataAdapternamespace DAL
    {
        /// <summary>
        /// 用于封装数据库操作的辅助类
        /// </summary>
        class DBHelper
        {
            //声明全局的连接字符串
            static string constr = "server=.;database=HotelManage;uid=sa;pwd=sasa";        #region 执行普通的SQL命令
            /// <summary>
            /// 执行增删改语句,返回受影响的行数
            /// </summary>
            public static int MyExecuteNonQuery(string sql) 
            {
                using (SqlConnection con = new SqlConnection(constr))
                {
                    con.Open();
                    SqlCommand cmd = new SqlCommand(sql,con);
                    return cmd.ExecuteNonQuery();
                }
            }        /// <summary>
            /// 执行查询语句,返回结果集的第1行第1列(单值)
            /// </summary>
            public static object MyExecuteScalar(string sql) 
            {
                using(SqlConnection con=new SqlConnection(constr))
                {
                    con.Open();
                    SqlCommand cmd = new SqlCommand(sql,con);
                    return cmd.ExecuteScalar();
                }
            }        /// <summary>
            /// 执行查询语句,返回DataTable对象
            /// </summary>
            public static DataTable MyDataTable(string sql)
            {
                SqlConnection con = new SqlConnection(constr);
                SqlDataAdapter dap = new SqlDataAdapter(sql,con);
                DataTable dt = new DataTable();
                dap.Fill(dt);
                return dt;
            }        /// <summary>
            /// 执行查询语句,返回SqlDataReader对象
            /// </summary>
            public static SqlDataReader MyExecuteReader(string sql) 
            {
                SqlConnection con = new SqlConnection(constr);
                con.Open();
                SqlCommand cmd = new SqlCommand(sql,con);
                return cmd.ExecuteReader(CommandBehavior.CloseConnection);
                //CommandBehavior.CloseConnection 表示关闭DataReader对象的同时关闭Connection对象
            }
            #endregion        #region 执行参数化SQL命令
            /// <summary>
            /// 执行参数化增删改语句,返回受影响的行数
            /// </summary>
            public static int MyExecuteNonQuery(string sql,SqlParameter[] ps)
            {
                using (SqlConnection con = new SqlConnection(constr))
                {
                    con.Open();
                    SqlCommand cmd = new SqlCommand(sql, con);
                    cmd.Parameters.AddRange(ps);
                    return cmd.ExecuteNonQuery();
                }
            }        /// <summary>
            /// 执行参数化查询语句,返回结果集的第1行第1列(单值)
            /// </summary>
            public static object MyExecuteScalar(string sql, SqlParameter[] ps)
            {
                using (SqlConnection con = new SqlConnection(constr))
                {
                    con.Open();
                    SqlCommand cmd = new SqlCommand(sql, con);
                    //3-为SqlCommand对象添加SqlParameter参数
                    cmd.Parameters.AddRange(ps);
                    return cmd.ExecuteScalar();
                }
            }        /// <summary>
            /// 执行参数化查询语句,返回DataTable对象
            /// </summary>
            public static DataTable MyDataTable(string sql,SqlParameter[] ps)
            {
                SqlConnection con = new SqlConnection(constr);
                SqlDataAdapter dap = new SqlDataAdapter(sql, con);
                //SqlDataAdapter.SelectCommand属性就是1个SqlCommand对象
                dap.SelectCommand.Parameters.AddRange(ps);
                DataTable dt = new DataTable();
                dap.Fill(dt);
                return dt;
            }        /// <summary>
            /// 执行查询语句,返回SqlDataReader对象
            /// </summary>
            public static SqlDataReader MyExecuteReader(string sql,SqlParameter[] ps)
            {
                SqlConnection con = new SqlConnection(constr);
                con.Open();
                SqlCommand cmd = new SqlCommand(sql, con);
                cmd.Parameters.AddRange(ps);
                return cmd.ExecuteReader(CommandBehavior.CloseConnection);
                //CommandBehavior.CloseConnection 表示关闭DataReader对象的同时关闭Connection对象
            }
            #endregion
        }
    }
    看看能不能帮到你
      

  5.   

    有dbhelper的框架,这些框架封装了一些底层操作,提供比较方便快捷的方法给高层模块调用,可以下载下来用。
    你也可以自己写一个框架。
      

  6.   

    谢谢楼上的回复,使用dbhelper类或者自己写一个操作数据库的类是否可以达到这样的目的,但是这种类操作完成数据之后就close了,下次使用的时候又要重新连接,这样就无法使用数据库的缓存的SQL语句和数据,再次查询数据的时候数据库又需要重新计算和查找,性能很慢,使createobject再打开数据的目的是保持与数据库的SESSION一直是OPEN的,这样高效率操作数据库
      

  7.   

    你可以在程序启动的时候OPEN,每次操作完别CLOSE不就得了...什么时候数据库连接失败了,再重新CLOSE,OPEN一次
      

  8.   

    string connection =//建立连接字符串
                "server=WRET-MOSY688YVW\\MRGLL;database=db_test;Trusted_Connection=true";        SqlConnection sc = new SqlConnection(connection);//创建SqlConnection对象
            try
            {
                sc.Open();//打开数据库连接
                string cmdtext =//建立SQL命令字符串
                    "DELETE FROM tb_student WHERE student_name=@name";
                SqlCommand cmd = new SqlCommand(cmdtext, sc);//创建SqlCommand对象
                cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = "小飞";//添加参数并为参数赋值
                int i = cmd.ExecuteNonQuery();//执行删除记录的命令
                if (i > 0) Console.WriteLine("删除记录成功");//控制台输出字符串
            }
            catch (Exception ex)//捕获异常
            {
                Console.WriteLine("打开数据库错误:{0}", ex.Message);//控制台输出字符串
            }
            finally
            {
                sc.Close();//关闭数据库连接
            }
            System.Console.ReadLine();//等待回车继续
      

  9.   

    createobject ,还在用这么古老的连接,能与时俱进一些吗