程序人生

致力于MicroSoft Borland Sybase Oracle技术的研究

导航

【转贴】 c# 的一个数据操作类

using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Collections;

namespace data_conn
{

    
/// <summary>
    
/// 数据库连接 / 操作类
    
/// </summary>
    public class DBClass
    {
        
/// <summary>
        
/// 全局变量定义
        
/// </summary>
        private SqlConnection  conn;
        
private SqlCommand     comm;
        
private SqlDataReader  dr;
        
private DataSet        ds;
        
private SqlDataAdapter dad;
        
public int rowInd;
        
private string sql;
        
private string sqlTable;
        
private string connStr;
        
public string errInfo = "";

        
public DBClass()
        {

        }

        
/// <summary>
        
///  数据库操作异常信息 只读属性
        
/// </summary>
        private string ErrInfo
        {
            
get
            {
                
return errInfo;
            }
        }

        
/// <summary>
        
///  要操作的Sql语句
        
/// </summary>
        public string Sql
        {
            
get
            {
                
return sql;
            }
            
set
            {
                sql 
= value;
            }
        }

        
/// <summary>
        
///  要操作的表名
        
/// </summary>
        public string SqlTable
        {
            
get
            {
                
return sqlTable;
            }
            
set
            {
                sqlTable 
= value;
            }
        }

        
/// <summary>
        
///  数据库链接字符串
        
/// </summary>
        public string ConnStr
        {
            
get
            {
                
return connStr;
            }
            
set
            {
                connStr 
= value;
            }
        }

        
/// <summary>
        
/// 打开数据库连接
        
/// </summary>
        public void connDb()
        {
            conn 
= new SqlConnection(connStr);
            
try
            {
                conn.Open();
            }
            
catch (SqlException e)
            {
                
for (int i = 0; i < e.Errors.Count; i++)
                {
                    errInfo 
+= "错误序号:" + i + "\n" +
                        
"出错信息:" + e.Errors[i].Message + "\n" +
                        
"出错来源:" + e.Errors[i].Source + "\n" +
                        
"程序:" + e.Errors[i].Procedure;
                }
                conn.Close();

            }
        }

        
/// <summary>
        
/// 用于窗体绑定
        
/// </summary>
        
/// <returns></returns>
        public DataView dataView()
        {
    
           
                connDb();
                dad 
= new SqlDataAdapter(sql, conn);
                ds 
= new DataSet(sqlTable);
                dad.Fill(ds, sqlTable);
                
return ds.Tables[sqlTable].DefaultView;
        }

        
/// <summary>
        
/// 执行存储过程,不返回结果
        
/// </summary>
        public void exeSp()
        {
        }

        
/// <summary>
        
/// 执行SQL语句,返回结果
        
/// </summary>
        public SqlDataReader readerData()
        {
            connDb();
            comm 
= new SqlCommand(sql, conn);
            dr   
= comm.ExecuteReader();
            
return dr;
        }

        
/// <summary>
        
/// 执行SQL语句,不返回结果
        
/// </summary>
        public void exeSql()
        {
                connDb();
                comm 
= new SqlCommand(sql, conn);
                comm.ExecuteNonQuery();
           

        }

        
/// <summary>
        
/// 运行存储过程
        
/// </summary>
        
/// <returns> 如果返回值为 -1 表示,运行存储过程有错误 </returns>
        public int RunProcedure(string storedProcName, SqlParameter[] parameters)
        {
            
int reInt = -1;
            connDb();
            comm 
= new SqlCommand(sql, conn);
            comm.CommandText 
= storedProcName;
            comm.CommandType 
= CommandType.StoredProcedure;
            
try
            {
                
if (parameters != null)
                {
                    
foreach (SqlParameter para in parameters)
                    {
                        comm.Parameters.Add(para);
                    }
                }

                comm.Parameters.Add(
"ReturnValue", SqlDbType.Int);
                comm.Parameters[
"ReturnValue"].Direction = ParameterDirection.ReturnValue;
                comm.ExecuteNonQuery();
                reInt 
= (int)(comm.Parameters["ReturnValue"].Value);
            }
            
catch (Exception ex)
            {
                errInfo 
+= ex.Message;
            }
            
finally
            {
                comm.Parameters.Clear();
                conn.Close();
            }
            
return reInt;
        }

        
/// <summary>
        
/// 运行存储过程取一列数据,未完成调试
        
/// </summary>
        public System.Collections.ArrayList ProcedureFillColumn(string storedProcName, SqlParameter[] parameters)
        {
            System.Collections.ArrayList reArrayList 
= new ArrayList();
            connDb();
            comm 
= new SqlCommand(sql, conn);
            
try
            {
                
if (parameters != null)
                {
                    
foreach (SqlParameter para in parameters)
                    {
                        comm.Parameters.Add(para);
                    }
                }

                comm.CommandText 
= storedProcName;
                comm.CommandType 
= CommandType.StoredProcedure;
                dr 
= comm.ExecuteReader();

                
while (dr.Read())
                {
                    reArrayList.Add(dr.GetValue(
0));
                }

                dr.Close();
            }
            
catch (Exception ex)
            {
                errInfo 
+= ex.Message;
            }
            
finally
            {
                comm.Parameters.Clear();
                conn.Close();
            }
            
return reArrayList;
        }

        
/// <summary>
        
/// 运行存储过程取一条记录,未完成调试
        
/// </summary>
        
/// <returns>
        
/// 返回reHashtable.key表示字段名,reHashtable.Value表示字段值
        
/// </returns>
        public System.Collections.Hashtable ProcedureFillRow(string storedProcName, SqlParameter[] parameters)
        {
            System.Collections.Hashtable reHashtable 
= new Hashtable();

            
try
            {
                
if (parameters != null)
                {
                    
foreach (SqlParameter para in parameters)
                    {
                        comm.Parameters.Add(para);
                    }
                }

                comm.CommandText 
= storedProcName;
                comm.CommandType 
= CommandType.StoredProcedure;
                connDb();
                dr 
= comm.ExecuteReader();

                
if (dr.Read())
                {
                    
for (int i = 0; i < dr.FieldCount; i++)
                    {
                        reHashtable.Add(dr.GetName(i), dr.GetValue(i));
                    }
                }

                dr.Close();
            }
            
catch (Exception ex)
            {
                errInfo 
+= ex.Message;
            }
            
finally
            {
                comm.Parameters.Clear();
                conn.Close();
            }
            
return reHashtable;
        }

        
/// <summary>
        
/// 用存储过程填充数据集,未完成调试
        
/// </summary>
        public DataSet ProcedureFillDataSet(string storedProcName, SqlParameter[] parameters)
        {
            comm.CommandText 
= storedProcName;
            comm.CommandType 
= CommandType.StoredProcedure;
            
try
            {
                
if (parameters != null)
                {
                    
foreach (SqlParameter para in parameters)
                    {
                        comm.Parameters.Add(para);
                    }
                }

                dad.SelectCommand 
= comm;
                connDb();
                dad.Fill(ds);
            }
            
catch (Exception ex)
            {
                errInfo 
+= ex.Message;
            }
            
finally
            {
                comm.Parameters.Clear();
                conn.Close();
            }
            
return ds;
        }

        
/// <summary>
        
/// 用存储过程填充数据表,未完成调试
        
/// </summary>
        public DataTable ProcedureFillTable(string storedProcName, SqlParameter[] parameters)
        {
            DataTable reTable 
= new DataTable();
            comm.CommandText 
= storedProcName;
            comm.CommandType 
= CommandType.StoredProcedure;

            
try
            {
                
if (parameters != null)
                {
                    
foreach (SqlParameter para in parameters)
                    {
                        comm.Parameters.Add(para);
                    }
                }

                dad.SelectCommand 
= comm;
                connDb();
                dad.Fill(reTable);
            }
            
catch (Exception ex)
            {
                errInfo 
+= ex.Message;
            }
            
finally
            {
                comm.Parameters.Clear();
                conn.Close();
            }
            
return reTable;
        }

        
/// <summary>
        
///  关闭链接
        
/// </summary>
        public void clear()
        {
            conn.Close();
        }
    }

}
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Collections;

namespace data_conn
{

    
/// <summary>
    
/// 数据库连接 / 操作类
    
/// </summary>
    public class DBClass
    {
        
/// <summary>
        
/// 全局变量定义
        
/// </summary>
        private SqlConnection  conn;
        
private SqlCommand     comm;
        
private SqlDataReader  dr;
        
private DataSet        ds;
        
private SqlDataAdapter dad;
        
public int rowInd;
        
private string sql;
        
private string sqlTable;
        
private string connStr;
        
public string errInfo = "";

        
public DBClass()
        {

        }

        
/// <summary>
        
///  数据库操作异常信息 只读属性
        
/// </summary>
        private string ErrInfo
        {
            
get
            {
                
return errInfo;
            }
        }

        
/// <summary>
        
///  要操作的Sql语句
        
/// </summary>
        public string Sql
        {
            
get
            {
                
return sql;
            }
            
set
            {
                sql 
= value;
            }
        }

        
/// <summary>
        
///  要操作的表名
        
/// </summary>
        public string SqlTable
        {
            
get
            {
                
return sqlTable;
            }
            
set
            {
                sqlTable 
= value;
            }
        }

        
/// <summary>
        
///  数据库链接字符串
        
/// </summary>
        public string ConnStr
        {
            
get
            {
                
return connStr;
            }
            
set
            {
                connStr 
= value;
            }
        }

        
/// <summary>
        
/// 打开数据库连接
        
/// </summary>
        public void connDb()
        {
            conn 
= new SqlConnection(connStr);
            
try
            {
                conn.Open();
            }
            
catch (SqlException e)
            {
                
for (int i = 0; i < e.Errors.Count; i++)
                {
                    errInfo 
+= "错误序号:" + i + "\n" +
                        
"出错信息:" + e.Errors[i].Message + "\n" +
                        
"出错来源:" + e.Errors[i].Source + "\n" +
                        
"程序:" + e.Errors[i].Procedure;
                }
                conn.Close();

            }
        }

        
/// <summary>
        
/// 用于窗体绑定
        
/// </summary>
        
/// <returns></returns>
        public DataView dataView()
        {
    
           
                connDb();
                dad 
= new SqlDataAdapter(sql, conn);
                ds 
= new DataSet(sqlTable);
                dad.Fill(ds, sqlTable);
                
return ds.Tables[sqlTable].DefaultView;
        }

        
/// <summary>
        
/// 执行存储过程,不返回结果
        
/// </summary>
        public void exeSp()
        {
        }

        
/// <summary>
        
/// 执行SQL语句,返回结果
        
/// </summary>
        public SqlDataReader readerData()
        {
            connDb();
            comm 
= new SqlCommand(sql, conn);
            dr   
= comm.ExecuteReader();
            
return dr;
        }

        
/// <summary>
        
/// 执行SQL语句,不返回结果
        
/// </summary>
        public void exeSql()
        {
                connDb();
                comm 
= new SqlCommand(sql, conn);
                comm.ExecuteNonQuery();
           

        }

        
/// <summary>
        
/// 运行存储过程
        
/// </summary>
        
/// <returns> 如果返回值为 -1 表示,运行存储过程有错误 </returns>
        public int RunProcedure(string storedProcName, SqlParameter[] parameters)
        {
            
int reInt = -1;
            connDb();
            comm 
= new SqlCommand(sql, conn);
            comm.CommandText 
= storedProcName;
            comm.CommandType 
= CommandType.StoredProcedure;
            
try
            {
                
if (parameters != null)
                {
                    
foreach (SqlParameter para in parameters)
                    {
                        comm.Parameters.Add(para);
                    }
                }

                comm.Parameters.Add(
"ReturnValue", SqlDbType.Int);
                comm.Parameters[
"ReturnValue"].Direction = ParameterDirection.ReturnValue;
                comm.ExecuteNonQuery();
                reInt 
= (int)(comm.Parameters["ReturnValue"].Value);
            }
            
catch (Exception ex)
            {
                errInfo 
+= ex.Message;
            }
            
finally
            {
                comm.Parameters.Clear();
                conn.Close();
            }
            
return reInt;
        }

        
/// <summary>
        
/// 运行存储过程取一列数据,未完成调试
        
/// </summary>
        public System.Collections.ArrayList ProcedureFillColumn(string storedProcName, SqlParameter[] parameters)
        {
            System.Collections.ArrayList reArrayList 
= new ArrayList();
            connDb();
            comm 
= new SqlCommand(sql, conn);
            
try
            {
                
if (parameters != null)
                {
                    
foreach (SqlParameter para in parameters)
                    {
                        comm.Parameters.Add(para);
                    }
                }

                comm.CommandText 
= storedProcName;
                comm.CommandType 
= CommandType.StoredProcedure;
                dr 
= comm.ExecuteReader();

                
while (dr.Read())
                {
                    reArrayList.Add(dr.GetValue(
0));
                }

                dr.Close();
            }
            
catch (Exception ex)
            {
                errInfo 
+= ex.Message;
            }
            
finally
            {
                comm.Parameters.Clear();
                conn.Close();
            }
            
return reArrayList;
        }

        
/// <summary>
        
/// 运行存储过程取一条记录,未完成调试
        
/// </summary>
        
/// <returns>
        
/// 返回reHashtable.key表示字段名,reHashtable.Value表示字段值
        
/// </returns>
        public System.Collections.Hashtable ProcedureFillRow(string storedProcName, SqlParameter[] parameters)
        {
            System.Collections.Hashtable reHashtable 
= new Hashtable();

            
try
            {
                
if (parameters != null)
                {
                    
foreach (SqlParameter para in parameters)
                    {
                        comm.Parameters.Add(para);
                    }
                }

                comm.CommandText 
= storedProcName;
                comm.CommandType 
= CommandType.StoredProcedure;
                connDb();
                dr 
= comm.ExecuteReader();

                
if (dr.Read())
                {
                    
for (int i = 0; i < dr.FieldCount; i++)
                    {
                        reHashtable.Add(dr.GetName(i), dr.GetValue(i));
                    }
                }

                dr.Close();
            }
            
catch (Exception ex)
            {
                errInfo 
+= ex.Message;
            }
            
finally
            {
                comm.Parameters.Clear();
                conn.Close();
            }
            
return reHashtable;
        }

        
/// <summary>
        
/// 用存储过程填充数据集,未完成调试
        
/// </summary>
        public DataSet ProcedureFillDataSet(string storedProcName, SqlParameter[] parameters)
        {
            comm.CommandText 
= storedProcName;
            comm.CommandType 
= CommandType.StoredProcedure;
            
try
            {
                
if (parameters != null)
                {
                    
foreach (SqlParameter para in parameters)
                    {
                        comm.Parameters.Add(para);
                    }
                }

                dad.SelectCommand 
= comm;
                connDb();
                dad.Fill(ds);
            }
            
catch (Exception ex)
            {
                errInfo 
+= ex.Message;
            }
            
finally
            {
                comm.Parameters.Clear();
                conn.Close();
            }
            
return ds;
        }

        
/// <summary>
        
/// 用存储过程填充数据表,未完成调试
        
/// </summary>
        public DataTable ProcedureFillTable(string storedProcName, SqlParameter[] parameters)
        {
            DataTable reTable 
= new DataTable();
            comm.CommandText 
= storedProcName;
            comm.CommandType 
= CommandType.StoredProcedure;

            
try
            {
                
if (parameters != null)
                {
                    
foreach (SqlParameter para in parameters)
                    {
                        comm.Parameters.Add(para);
                    }
                }

                dad.SelectCommand 
= comm;
                connDb();
                dad.Fill(reTable);
            }
            
catch (Exception ex)
            {
                errInfo 
+= ex.Message;
            }
            
finally
            {
                comm.Parameters.Clear();
                conn.Close();
            }
            
return reTable;
        }

        
/// <summary>
        
///  关闭链接
        
/// </summary>
        public void clear()
        {
            conn.Close();
        }
    }

}

posted on 2007-05-07 16:30  yoyo918  阅读(415)  评论(0)    收藏  举报