操作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;
            }
        }
    }
}

  

时间: 2024-08-23 23:07:44

操作SQL Server的帮助类的相关文章

[转]C#操作SQL Server数据库

转自:C#操作SQL Server数据库 1.概述 ado.net提供了丰富的数据库操作,这些操作可以分为三个步骤: 第一,使用SqlConnection对象连接数据库: 第二,建立SqlCommand对象,负责SQL语句的执行和存储过程的调用: 第三,对SQL或存储过程执行后返回的“结果”进行操作. 对返回“结果”的操作可以分为两类: 一是用SqlDataReader直接一行一行的读取数据集: 二是DataSet联合SqlDataAdapter来操作数据库. 两者比较: SqlDataRead

C#操作SQL Server数据库

C#操作SQL Server数据库 1.概述 2.连接字符串的写法 3.SqlConnection对象 4.SqlCommand对象 5.SqlDataReader对象 6.DataSet对象 7.释放资源 1.概述 ado.net提供了丰富的数据库操作,这些操作可以分为三个步骤: 第一,使用SqlConnection对象连接数据库: 第二,建立SqlCommand对象,负责SQL语句的执行和存储过程的调用: 第三,对SQL或存储过程执行后返回的"结果"进行操作. 对返回"结

数据库SQL Server2012笔记(七)——java 程序操作sql server

1.crud(增删改查)介绍:create/retrieve/update/delete 2.JDBC介绍 1)JDBC(java database connectivity,java数据库连接) 2)是一种用于运行SQL语句的java  API,可为多种关系数据库提供统一訪问.由一组用Java语言编写的类和接口组成. 3)JDBC为工具/数据库开发者提供了一个标准的API,据此可构建更高级的工具和接口,是数据库开发者可以用纯Java API编写数据库应用程序. 4)JDBC也是闪避表明. 3.

解答关于.NET Core操作SQL Server的一些小问题

我以前没有关注过这个问题,是因为我在项目中通常使用的bean,无论是service层的,还是dao层的,都是没有状态的bean,里面只有方法,没有成员变量.在使用这样的bean的时候,多个线程访问同一个bean不会产生线程安全问题. 数据库运维中盛传一个小段子,我误删除了数据库,改怎么办?有备份还原备份,没有备份就准备简历!听起来有趣但发生在谁身上,谁都笑不起来. 后面每搭建一个新的服务都需要在keystone中执行四种操作:1.建租户 2.建用户 3.建角色 4.做关联后面所有的服务公用一个租

一个简单的Java 连接SQL Server数据库连接驱动类

import java.sql.*; /** * SQL Server数据库连接类 * @author Administrator * */ public class Sqlsdc { static int a = 0; public Connection sqlsdc(String user, String pwd, String dn) { String url = "jdbc:sqlserver://localhost:1433;databaseName="+dn; final

php操作sql server 驱动

php操作sql server 驱动,微软官方提供2个版本,version 2.0 和 verSion 3.0 version 2.0 版本支持的操作系统有: windows server 2003 service pack1 windows xp service pack 3 windows vista service pack 1 or later windows server 2008 windows server 2008 R2 windows 7 version 3.0版本支持的操作系

Nodejs 操作 Sql Server

Nodejs 操作 Sql Server Intro 最近项目需要爬取一些数据,数据有加密,前端的js又被混淆了,ajax请求被 hook 了,有些复杂,最后打算使用 puppeteer 来爬取数据. Puppeteer 是谷歌团队在维护的一个项目,初衷主要是用来做网页的自动化测试, Google Chrome 团队官方的无界面(Headless)Chrome 工具,它是一个 Node 库,提供了一个高级的 API 来控制 DevTools协议上的无头版 Chrome ,也可以配置为使用完整(非

基于Spring Boot,使用JPA操作Sql Server数据库完成CRUD

完成一个RESTful服务,提供几个访问接口,用来操作较简单的联系人信息,数据保存在Sql Server数据库中. 1.使用STS创建工程. 使用STS创建RESTful工程,可以参考: <用Spring Tools Suite(STS)开始一个RESTful Web Service><SpringBoot构建RESTful service完成Get和Post> 新建项目时的Project Name,Group,Atifact,Package这些参数按照实际要求填. 项目引入依赖w

SQL Server中四类事务并发问题的实例再现(转)

本篇文章将用实例再现数据库访问中四类并发问题,希望能让初学者能对事务的并行性有进一步的理解. 首先,让我们先来了解一下并行问题以及事务隔离级别这两个概念.在数据库中,假设如果没有锁定且多个用户同时访问一个数据库,则当他们的事务同时使用相同的数据时可能会发生问题.并发问题包括: 丢失或覆盖更新. 未确认的相关性(脏读). 不一致的分析(非重复读). 幻像读. 下面让我们稍花点时间来解释一下这四类问题:1.丢失更新当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,会发生丢失更新问题.每个事