SqlServerHelper.cs数据库操作

using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.Data.SqlClient;
using  System.Data;
using  System.Collections;
using  System.Collections.Specialized;
using  System.Drawing;
using  System.IO;
namespace  BasicAppClass
{
    
public enum SqlExceptionType
    
{
        UniqueKey 
= 1,//重复键
        ForeignKey=2  //外键
    }

  
public  class SqlServerHelper
    
{
        
//数据库连接字符串
        private static string connectionString = "Data Source=192.168.1.51;initial catalog=NBSM_ERP;user id=sa;password=haike;Connect Timeout=30;min pool size=15;max pool size=2000";
        IniOperation io 
= new IniOperation("Sys_File.ini");
        
//private static string connectionString = "Data Source=./SQLExpress;AttachDbFilename=D:/慈溪神马/NBSM_ERP.mdf;Integrated Security=True;User Instance=True";
        
//公用连接
        private static SqlConnection connection;
        
//错误代码
        private static int ErrorCode = -1;


        
private void SetConnectString()
        
{
            io.IniReadValue(
"SQLCONNECTSTRING1""IP");
            connectionString 
= "Data Source=192.168.1.51;initial catalog=NBSM_ERP;user id=sa;password=haike;Connect Timeout=30;min pool size=15;max pool size=2000";
        }

        
        
/// <summary>
        
/// 创建公用连接
        
/// </summary>
        
/// <returns></returns>

        private static void GetConnection()
        
{
            connection 
= new SqlConnection(connectionString);
            
if (connection.State != ConnectionState.Open)
                connection.Open();
        }

        
/// <summary>
        
/// 关闭公用连接
        
/// </summary>

        private static void CloseConnection()
        
{
            
if (connection.State == ConnectionState.Open)
                connection.Close();

        }

        
/// <summary>
        
/// 执行查询语句,返回DataSet对象
        
/// </summary>
        
/// <param name="SQLString">查询语句</param>
        
/// <returns>DataSet</returns>

        public static DataSet Query(string SQLString)
        
{
            GetConnection();
            DataSet ds 
= new DataSet();
            
try
            
{
                
if (connection.State != ConnectionState.Open)
                    connection.Open();
                SqlDataAdapter command 
= new SqlDataAdapter(SQLString, connection);
                command.Fill(ds, 
"ds");
                CloseConnection();

            }

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

            
return ds;
        }

        
/// <summary>
        
/// 执行存储过程,返回DataSet对象
        
/// </summary>
        
/// <param name="SQLString">查询语句</param>
        
/// <returns>DataSet</returns>

      public static DataSet Query(string StoredProcedureStr, SqlParameter[] parameters)
        
{
            GetConnection();
            DataSet ds 
= new DataSet();
            
try
            
{
                
if (connection.State != ConnectionState.Open)
                    connection.Open();
                SqlDataAdapter command 
= new SqlDataAdapter(StoredProcedureStr, connection);
                command.SelectCommand.CommandType 
= CommandType.StoredProcedure;
                
foreach (SqlParameter parameter in parameters)
                
{
                    command.SelectCommand.Parameters.Add(parameter);
                }

                command.Fill(ds, 
"ds");
                CloseConnection();

            }

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

            
return ds;
        }

        
/// <summary>
        
/// 执行SQL语句,返回影响的记录数
        
/// </summary>
        
/// <param name="SQLString">SQL语句</param>
        
/// <returns>影响的记录数,若有异常则返回错误代码</returns>

        public static int ExecuteSql(string SQLString)
        
{
            GetConnection();
            
using (SqlCommand cmd = new SqlCommand(SQLString, connection))
            
{
                
try
                
{
                    
if (connection.State != ConnectionState.Open)
                        connection.Open();
                    
int rows = cmd.ExecuteNonQuery();
                    CloseConnection();
                    
return rows;
                }

                
catch (System.Data.SqlClient.SqlException E)
                
{
                    CloseConnection();
                    
if (E.Number == 2627)//重复键
                    {
                        
throw new Exception(SqlExceptionType.UniqueKey.ToString());
                    }

                    
else if (E.Number == 547)//外键
                    {
                        
throw new Exception(SqlExceptionType.ForeignKey.ToString());
                    }

                    
else
                    
{
                        
throw new Exception(E.Message);
                    }

                    
                    
return ErrorCode;
                }

            }


        }

        
/// <summary>
        
/// 执行存储过程,返回影响的记录数
        
/// </summary>
        
/// <param name="SQLString">SQL语句</param>
        
/// <returns>影响的记录数,若有异常则返回错误代码</returns>

      public static int ExecuteStoredProcedure(string StoredProcedureStr, SqlParameter[] parameters)
        
{
            GetConnection();
            
using (SqlCommand cmd = new SqlCommand(StoredProcedureStr, connection))
            
{
                
try
                
{
                    
if (connection.State != ConnectionState.Open)
                    
{
                        connection.Open();
                    }

                    
foreach (SqlParameter parameter in parameters)
                    
{
                        cmd.Parameters.Add(parameter);
                    }

                    cmd.CommandType 
= CommandType.StoredProcedure;
                    
int rows = cmd.ExecuteNonQuery();
                    CloseConnection();
                    
return rows;
                }

                
catch (System.Data.SqlClient.SqlException E)
                
{
                    CloseConnection();
                    
if (E.Number == 2601)//重复键
                    {
                        
throw new Exception(SqlExceptionType.UniqueKey.ToString());
                    }

                    
else
                    
{
                        
throw new Exception(E.Message);
                    }


                    
return ErrorCode;
                }

            }


        }

        
/// <summary>
        
/// 执行多条SQL语句,实现数据库事务。
        
/// </summary>
        
/// <param name="SQLStringList">多条SQL语句</param>        

        public static void ExecuteSqlTran(ArrayList SQLStringList)
        
{
            GetConnection();
            
if (connection.State != ConnectionState.Open)
                connection.Open();
            SqlCommand cmd 
= new SqlCommand();
            cmd.Connection 
= connection;
            SqlTransaction tx 
= connection.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();
                CloseConnection();
            }

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

        }


        
/// <summary>
        
/// 向数据库里插入图像格式的字段
        
/// </summary>
        
/// <param name="sql">SQL语句</param>
        
/// <param name="path">图像路径</param>
        
/// <returns>影响的记录数</returns>

      public static int imgToDB(string sql,string path)
      
{   
          
//参数sql中要求保存的imge变量名称为@fs
          
          FileStream fs 
= File.OpenRead(path);
          
byte[] imageb = new byte[fs.Length];
          fs.Read(imageb, 
0, imageb.Length);
          fs.Close();
          GetConnection();
          SqlCommand com3 
= new SqlCommand(sql, connection);
          com3.Parameters.Add(
"@fs", SqlDbType.Image).Value = imageb;

         
          
try
          
{
              GetConnection();
              
int rows = com3.ExecuteNonQuery();
              CloseConnection();
              
return rows;
          }

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

          
finally
          
{
              com3.Dispose();
              CloseConnection();
          }

         
      }
 

      
/// <summary>
      
/// 读取图片
      
/// </summary>
      
/// <param name="Sql">SQL语句</param>
      
/// <returns>Bitmap对象</returns>

      public static Bitmap QueryImg(string Sql)
      
{
          Bitmap bm 
= null;
          
          GetConnection();
          
try
          
{
              GetConnection();
              SqlCommand cmd 
= new SqlCommand(Sql, connection);
              
byte[] blob = (byte[])cmd.ExecuteScalar();
              
if (blob.Length > 0)
              
{
                  MemoryStream stream 
= new MemoryStream(blob,true);
                  stream.Write(blob, 
0, blob.Length);
                  bm 
= new Bitmap(stream);
                  stream.Close();
                  CloseConnection();
              }

              
return bm;

          }

          
catch(Exception e)
          
{
              
return null;
          }

      }


    }

}

 
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值