SQLHelper

来源:互联网 发布:淘宝牛仔裤哪家好 编辑:程序博客网 时间:2024/05/16 11:56
1、数据库的连接语句最好写在配置文件中,如下:
<connectionStrings>
    <add name="connstr" connectionString="server=.;uid=sa;pwd=9369hello;database=Itcast2014"/>
</connectionStrings>
2、一个完整的sqlhelper的写法:
  public static readonly string connectionString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
        public static int ExecuteNonQuery(string sql,params SqlParameter[] ps)
        {
           using (SqlConnection conn=new SqlConnection(connectionString))
            {
               using (SqlCommand cmd=new SqlCommand(sql,conn))
                {
                    if (ps!=null)
                    {
                        conn.Open();
                        cmd.Parameters.AddRange(ps);
                    }
                    return cmd.ExecuteNonQuery();
                }
            }
        }
        public static object ExecuteScalar(string sql,params SqlParameter[] ps)
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    if (ps != null)
                    {
                        conn.Open();
                        cmd.Parameters.AddRange(ps);
                    }
                    return cmd.ExecuteScalar();
                }
            }
        }
        public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] ps)
        {
            SqlConnection conn = new SqlConnection(connectionString);
            using (SqlCommand cmd=new SqlCommand(sql,conn))
            {
                if (ps!=null)
                {
                   
                    cmd.Parameters.Add(ps);
                }
                try
                {
                    conn.Open();
                    return cmd.ExecuteReader(CommandBehavior.CloseConnection);//当使用完SqlDataReader,关闭SqlDataReader后,同时也会关闭相应的数据库的连接。
                }
                catch (Exception ex)
                {
                    conn.Close();
                    conn.Dispose();
                    throw ex;
                }
            }
        }
CommandBehavior 枚举:
成员名称 说明 Default 此查询可能返回多个结果集。执行查询可能会影响数据库状态。Default 不设置 CommandBehavior 标志,因此调用 ExecuteReader(CommandBehavior.Default) 在功能上等效于调用 ExecuteReader()。 SingleResult 查询返回一个结果集。 SchemaOnly 查询仅返回列信息。当使用 SchemaOnly 时,用于 SQL Server 的 .NET Framework 数据提供程序将在要执行的语句前加上 SET FMTONLY ON。 KeyInfo 此查询返回列和主键信息。 SingleRow 查询应返回一行。执行查询可能会影响数据库的状态。一些 .NET Framework 数据提供程序可能(但不要求)使用此信息来优化命令的性能。用 OleDbCommand 对象的 ExecuteReader 方法指定 SingleRow 时,用于 OLE DB 的 .NET Framework 数据提供程序使用 OLE DB IRow 接口(如果可用)执行绑定。否则,它使用 IRowset 接口。如果您的 SQL 语句应该只返回一行,则指定 SingleRow 还可以提高应用程序性能。在执行返回多个结果集的查询时,可以指定 SingleRow。在这种情况下,仍返回多个结果集,但每个结果集只有一行。 SequentialAccess 提供一种方法,以便 DataReader 处理包含带有大二进制值的列的行。SequentialAccess 不是加载整行,而是使 DataReader 将数据作为流来加载。然后可以使用 GetBytes 或 GetChars 方法来指定开始读取操作的字节位置以及正在返回的数据的有限的缓冲区大小。 CloseConnection 在执行该命令时,如果关闭关联的 DataReader 对象,则关联的 Connection 对象也将关闭。 
0 0
原创粉丝点击