zoukankan      html  css  js  c++  java
  • 操作SQL Server的帮助类

    可作为以后开发的参考代码,也可以再整理下,代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.SqlClient;
    using System.Data;
    using System.Configuration;
    
    using System.Windows.Forms;
    
    namespace test1
    {
        class DataBase 
        {
            private static string connString;
            private  static SqlConnection Conn;
            //获取连接数据库字符串
            public static String GetConnString()
            {
                string connString = "chaiqianD2.Properties.Settings.testConnectionString";
                String s = ConfigurationManager.ConnectionStrings[connString].ConnectionString;
                return s;
            }
    
            /**////<summary>
            ///创建connnection并打开
            /// </summary>
            public static void Open()
            {
                GetConnString();
                connString = GetConnString();
                Conn = new SqlConnection();
                Conn.ConnectionString = connString;
                try
                {
                    Conn.Open();
                }
                catch (SqlException ee)
                {
                    MessageBox.Show(ee.Message.ToString() + ee.ToString());
                }
            }
    
            /**////<summary>
            ///获取connnection
            /// </summary>
            public static SqlConnection getConnection()
            {
                Open();
                return Conn;
            }
    
            //执行查询,返回受影响的行数
            public static int ExecuteSQL(string cmdString)
            {
                Open();
                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = cmdString;
                cmd.Connection = Conn;
                cmd.CommandType = System.Data.CommandType.Text;
                //返回数据库操作影响的行数
                int nAffected = -1;
                try
                {
                    nAffected = cmd.ExecuteNonQuery();
                }
                catch (SqlException sqlEx)
                {
                    MessageBox.Show(sqlEx.Message.ToString());
                    throw sqlEx;
                }
                finally
                {
                    Conn.Close();
                }
                return nAffected;
            }
    
            //返回第一行第一列的数据
            public static int ExecuteScalar(string cmdString)
            {
                Open();
                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = cmdString;
                cmd.Connection = Conn;
                cmd.CommandType = System.Data.CommandType.Text;
                //返回数据库操作影响的行数
                int count = 0;
                try
                {
                    count = Int32.Parse(cmd.ExecuteScalar().ToString().Trim());
                }
                catch (SqlException ee)
                {
                    Conn.Close();
                    MessageBox.Show(ee.Message.ToString());
                    count = -1;
                    
                }
                finally
                {
                    Conn.Close();
                }
                return count;
            }
    
            //关闭连接
            public static void Close()
            {
                if (Conn.State == ConnectionState.Open)
                Conn.Close();
            }
    
            //根据查询语句和在数据集中表的名字,返回DataSet
            public static DataSet GetDataSet(String cmdString, String strTableName)
            {
                Open();
                SqlCommand cmd = new SqlCommand(cmdString, Conn);
                SqlDataAdapter myAd = new SqlDataAdapter();
                myAd.SelectCommand = new SqlCommand(cmdString, Conn);
    
                DataSet myDs = new DataSet();
                //填充数据
                try
                {
                    myAd.Fill(myDs, strTableName);
                    return myDs;
                }
                catch (SqlException sqlEx)
                {
                   
                    MessageBox.Show(sqlEx.Message.ToString());
                    throw sqlEx;
                }
                catch (Exception ex)   
                {
                    MessageBox.Show(ex.Message.ToString());
                    throw ex;
                }
                finally
                {
                    Close();
                }
    
            }
    
            //返回datareader
            public static SqlDataReader GetDataReader(string CmdStr)
            {
                Open();
                SqlCommand myCmd = new SqlCommand();
                myCmd.Connection = Conn;
                myCmd.CommandType = CommandType.Text;
                myCmd.CommandText = CmdStr;
                SqlDataReader myDr = null;
                try
                {
                    //数据读取器关闭时,连接对象自动关闭
                    myDr = myCmd.ExecuteReader(CommandBehavior.CloseConnection);
                }
                catch (SqlException sqlEx)
                {
                    Close();
                    if (myDr != null)
                        myDr.Close();
                    throw sqlEx;
                }
                 return myDr;
            }
            
            //执行存储过程的函数
            public static int ExecuteStoredProcedure(string StoredProcedureStr, SqlParameter[] parameters)
            { 
                Open();
                 
                using (SqlCommand cmd = new SqlCommand(StoredProcedureStr, Conn))
                {
                    try
                    {
                        if (Conn.State != ConnectionState.Open)
                        {
                            Conn.Open();
                        }
                        foreach (SqlParameter parameter in parameters)
                        {
                            cmd.Parameters.Add(parameter);
                        }
                        cmd.CommandType = CommandType.StoredProcedure;
                        int rows = cmd.ExecuteNonQuery();
                        Close();
                        return rows;
                    }
                    catch (SqlException E)
                    {
                        MessageBox.Show(E.Message.ToString());
                        throw E;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message.ToString());
                        return -1;
    
                    }
                    finally
                    {
                        Close();
                    }
                     
                }
                
    
            }
    
            //
            public static int ExecuteNonQuery(string cmdText, params SqlParameter[] commandParameters)
            {
                SqlCommand cmd = new SqlCommand();
                PrepareCommand(cmd, cmdText, commandParameters);
                int val = cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                return val;
            }
    
            //
            private static void PrepareCommand(SqlCommand cmd, string cmdText, SqlParameter[] cmdParms)
            {
                Open();
                cmd.Connection = Conn;
                cmd.CommandText = cmdText;
                cmd.CommandType = CommandType.Text;
    
                if (cmdParms != null)
                {
                    foreach (SqlParameter parm in cmdParms)
                        cmd.Parameters.Add(parm);
                }
            }
    
    
            public static SqlDataReader ExecuteReader(string cmdText, params SqlParameter[] commandParameters)
            {
                SqlCommand cmd = new SqlCommand();
                try
                {
                    PrepareCommand(cmd, cmdText, commandParameters);
                    SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                    cmd.Parameters.Clear();
                    return rdr;
                }
                catch (SqlException ee)
                {
                    Close();
                    MessageBox.Show(ee.Message.ToString());
                    return null;
                }
            }
    
    
             /**//// <summary>
            /// 执行存储过程,返回DataSet对象
            /// </summary>
            /// <param name="SQLString">查询语句</param>
            /// <returns>DataSet</returns>
            public static DataSet Query(string StoredProcedureStr, SqlParameter[] parameters, string tableName){
                Open();
                DataSet ds = new DataSet();
                try
                {
                    if (Conn.State != ConnectionState.Open)
                        Conn.Open();
                    SqlDataAdapter command = new SqlDataAdapter(StoredProcedureStr, Conn);
                    command.SelectCommand.CommandType = CommandType.StoredProcedure;
                    foreach (SqlParameter parameter in parameters)
                    {
                        command.SelectCommand.Parameters.Add(parameter);
                    }
                    command.Fill(ds, tableName);
                    Close();
    
                }
                catch (System.Data.SqlClient.SqlException ex)
                {
                    MessageBox.Show(ex.Message.ToString() + ex.Number);
                    throw ex;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
                finally
                {
                    Close();
                }
                return ds;
            }
    
    
            //执行存储过程,返回多个表的结果集
            public static DataSet Query(string StoredProcedureStr, SqlParameter[] parameters)
            {
                Open();
                DataSet ds = new DataSet();
                try
                {
                    if (Conn.State != ConnectionState.Open)
                        Conn.Open();
                    SqlDataAdapter command = new SqlDataAdapter(StoredProcedureStr, Conn);
                    command.SelectCommand.CommandType = CommandType.StoredProcedure;
                    foreach (SqlParameter parameter in parameters)
                    {
                        command.SelectCommand.Parameters.Add(parameter);
                    }
                    command.Fill(ds);
                    Close();
    
                }
                catch (System.Data.SqlClient.SqlException ex)
                {
                    MessageBox.Show(ex.Message.ToString() + ex.Number);
                    throw ex;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
                finally
                {
                    Close();
                }
                return ds;
            }
    
            //
            public static void ShowSqlException(SqlException ex)
            {
                if (ex == null)
                    return;
                // uses SQLServer 2000 ErrorCodes 
                switch (ex.Number)
                {
                    case 17:
                    //     SQL Server does not exist or access denied. 
                    case 4060:
                    // Invalid Database 
                    case 18456:
                    // Login Failed 
                    break;
                    case 547:
                    MessageBox.Show("外键约束!");
                    // ForeignKey Violation 
                    break;
                    case 1205:
                    // DeadLock Victim
                    break;
                    case 2627:
                    MessageBox.Show("违反约束,插入重复值!");
                    break;
                    case 2601:
                    MessageBox.Show("违反唯一约束,插入重复值!");
                    // Unique Index/Constriant Violation 
                    break;
                    default:
                    // throw a general DAL Exception 
                    break;
                }
            } 
        }
    }

      

    作者:BestNow
    出处:http://www.cnblogs.com/BestNow/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    JDBC的URL
    使用CablleStatement调用存储过程
    PreparedStatement执行sql語句
    使用Statement执行DML和DQL语句
    使用Statement对象执行静态sql语句
    JDBC接口核心的API
    MapReduce源代码分析之JobSubmitter(一)
    React Native Android入门实战及深入源代码分析系列(2)——React Native源代码编译
    Oracle学习笔记(5)——查询
    springMVC4(5)RestTemplate控制层单元測试
  • 原文地址:https://www.cnblogs.com/tianxue/p/4117564.html
Copyright © 2011-2022 走看看