winform中通用的数据库操作类

本文介绍了一个酒店管理系统的数据库操作类,包括连接数据库、执行SQL语句、事务处理、查询等功能。通过具体的C#代码实现展示了如何进行数据库交互。
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Data;
using System.Data.SqlClient;

namespace 酒店管理系统
{
    
public class DBManage
    
{
        
private static string connectionString ;

        
//获取连接字符串,参数为服务器、数据库、用户名、密码
        public static void connectToServer(string server,string database,string user,string pwd)
        
{

            
string con = "server="+server+";database="+database+";uid="+user+";pwd="+pwd;
            DBManage.connectionString
=con;
        }


        
//执行SQL语句,返回影响的记录数
        public static int ExecuteSql(string SQLString)
        
{
            SqlConnection connection 
= new SqlConnection(connectionString);
            SqlCommand cmd 
= new SqlCommand(SQLString, connection);
               
            
try
            
{
                connection.Open();
                
int rows = cmd.ExecuteNonQuery();
                
return rows;
            }

            
catch (System.Data.SqlClient.SqlException E)
            
{
                connection.Close();
                
throw new Exception(E.Message);
            }

            
        }


        
//执行多条SQL语句,实现数据库事务。
        public static void ExecuteSqlTran(ArrayList SQLStringList)
        
{
            SqlConnection conn 
= new SqlConnection(connectionString);            
            conn.Open();
            SqlCommand cmd 
= new SqlCommand();
            cmd.Connection 
= conn;
            SqlTransaction tx 
= conn.BeginTransaction();
            cmd.Transaction 
= tx;
            
try
            
{
                
for (int n = 0; n < SQLStringList.Count; n++)
                
{
                    
string strsql = SQLStringList[n].ToString();
                    
if (strsql.Trim().Length > 1)
                    
{
                        cmd.CommandText 
= strsql;
                        cmd.ExecuteNonQuery();
                    }

                }

                tx.Commit();
            }

            
catch (System.Data.SqlClient.SqlException E)
            
{
                tx.Rollback();
                
throw new Exception(E.Message);
            }
            
        }


        
//执行一条计算查询结果语句,返回查询结果(object)。
        public static object GetSingle(string SQLString)
        
{
            SqlConnection connection 
= new SqlConnection(connectionString);
            SqlCommand cmd 
= new SqlCommand(SQLString, connection);
        
            
try
            
{
                connection.Open();
                
object obj = cmd.ExecuteScalar();
                
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
                
{
                    
return null;
                }

                
else
                
{
                    
return obj;
                }

            }

            
catch (System.Data.SqlClient.SqlException e)
            
{
                connection.Close();
                
throw new Exception(e.Message);
            }

        }

      

        
//执行查询语句,返回SqlDataReader.
        public static SqlDataReader ExecuteReader(string strSQL)
        
{
            SqlConnection connection 
= new SqlConnection(connectionString);
            SqlCommand cmd 
= new SqlCommand(strSQL, connection);

            
try
            
{
                connection.Open();
                SqlDataReader myReader 
= cmd.ExecuteReader();
                
return myReader;
            }

            
catch (System.Data.SqlClient.SqlException e)
            
{
                
throw new Exception(e.Message);
            }


         }


         
//执行查询语句,返回DataSet.
        public static DataSet Query(string SQLString)
        
{
            SqlConnection connection 
= new SqlConnection(connectionString);
           
            DataSet ds 
= new DataSet();
            
try
            
{
                connection.Open();
                SqlDataAdapter command 
= new SqlDataAdapter(SQLString, connection);
                command.Fill(ds, 
"ds");
            }

            
catch (System.Data.SqlClient.SqlException ex)
            
{
                
throw new Exception(ex.Message);
            }

            
return ds;
            
        }



        
//参数为字段名和表名,返回最大值
        public static int GetMaxID(string FieldName, string TableName)
        
{
            
string strsql = "select max (" + FieldName + ") from " + TableName;
            
object obj = GetSingle(strsql);
            
if (obj == null)
            
{
                
return 1;
            }

            
else
            
{
                
return int.Parse(obj.ToString());
            }

        }


        
//构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值),参数为数据库连接、存储过程名、存储过程参数。
        public static SqlCommand BuildQueryCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
        
{
            SqlCommand command 
= new SqlCommand(storedProcName, connection);
            command.CommandType 
= CommandType.StoredProcedure;
            
foreach (SqlParameter parameter in parameters)
            
{
                command.Parameters.Add(parameter);
            }

            
return command;
        }


        
//创建 SqlCommand 对象实例(用来返回一个整数值),参数为数据库连接、存储过程名、存储过程参数。
        public static SqlCommand BuildIntCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
        
{
            SqlCommand command 
= BuildQueryCommand(connection, storedProcName, parameters);
            command.Parameters.Add(
new SqlParameter("ReturnValue",
                SqlDbType.Int, 
4, ParameterDirection.ReturnValue,
                
false00string.Empty, DataRowVersion.Default, null));
            
return command;
        }



        
//执行存储过程,返回SqlDataReader
        public static SqlDataReader RunProcedure(string storedProcName, IDataParameter[] parameters)
        
{
            SqlConnection connection 
= new SqlConnection(connectionString);
            SqlDataReader returnReader;
            connection.Open();
            SqlCommand command 
= BuildQueryCommand(connection, storedProcName, parameters);
            command.CommandType 
= CommandType.StoredProcedure;
            returnReader 
= command.ExecuteReader();
            
return returnReader;
        }


        
//执行存储过程,返回结果集
        public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)
        
{
            SqlConnection connection 
= new SqlConnection(connectionString);           
            DataSet dataSet 
= new DataSet();
            connection.Open();
            SqlDataAdapter sqlDA 
= new SqlDataAdapter();
            sqlDA.SelectCommand 
= BuildQueryCommand(connection, storedProcName, parameters);
            sqlDA.Fill(dataSet, tableName);
            connection.Close();
            
return dataSet;
            
        }


        
//执行存储过程,返回影响的行数.
        public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected)
        
{
            SqlConnection connection 
= new SqlConnection(connectionString);
            
int result;
            connection.Open();
            SqlCommand command 
= BuildIntCommand(connection, storedProcName, parameters);
            rowsAffected 
= command.ExecuteNonQuery();
            result 
= (int)command.Parameters["ReturnValue"].Value;
            
//Connection.Close();
            return result;
            
        }

        
//public int count(string sqls)
        
//{
        
//    System.Data.SqlClient.SqlConnection sqlf = this.createConnection();
        
//    System.Data.SqlClient.SqlCommand cmdf = new SqlCommand(sqls, sqlf);
        
//    sqlf.Open();

        
//    int num = Convert.ToInt32(cmdf.ExecuteScalar());
        
//    if (num > 0)
        
//    {
        
//        sqlf.Close();
        
//        return num;
        
//    }
        
//    else
        
//    {
        
//        sqlf.Close();
        
//        return 0;

        
//    }

        
////返回执行结果的总数

    }

}

转载于:https://www.cnblogs.com/luozhanbin/archive/2008/07/12/1241564.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值