首页 > 数据库 >C# SQLServer数据库连接并执行类

C# SQLServer数据库连接并执行类

时间:2022-12-21 13:55:15浏览次数:39  
标签:parameters C# 数据库 cmd SQLServer System SqlConnection using conn

SQLHelper.cs

 

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.Configuration;

public class SQLHelper
{
    public static string GetSqlConnectionString()
    {
        //return ConfigurationManager.ConnectionStrings["Sql"].ConnectionString;
            return "Data Source='IP地址';Initial Catalog='数据库';User ID='用户名';Password='密码'";

    }
    //适合增删改操作,返回影响条数
    public static int ExecuteNonQuery(string sql, params SqlParameter[] parameters)
    {
        using (SqlConnection conn = new SqlConnection(GetSqlConnectionString()))
        {
            using (SqlCommand comm = conn.CreateCommand())
            {
                conn.Open();
                comm.CommandText = sql;
                comm.Parameters.AddRange(parameters);
                return comm.ExecuteNonQuery();
            }
        }
    }
    //查询操作,返回查询结果中的第一行第一列的值
    public static object ExecuteScalar(string sql, params SqlParameter[] parameters)
    {
        using (SqlConnection conn = new SqlConnection(GetSqlConnectionString()))
        {
            using (SqlCommand comm = conn.CreateCommand())
            {
                conn.Open();
                comm.CommandText = sql;
                comm.Parameters.AddRange(parameters);
                return comm.ExecuteScalar();
            }
        }
    }
    //Adapter调整,查询操作,返回DataTable
    public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)
    {
        using (SqlDataAdapter adapter = new SqlDataAdapter(sql, GetSqlConnectionString()))
        {
            DataTable dt = new DataTable();
            adapter.SelectCommand.Parameters.AddRange(parameters);
            adapter.Fill(dt);
            return dt;
        }
    }

    public static SqlDataReader ExecuteReader(string sqlText, params SqlParameter[] parameters)
    {
        //SqlDataReader要求,它读取数据的时候有,它独占它的SqlConnection对象,而且SqlConnection必须是Open状态
        SqlConnection conn = new SqlConnection(GetSqlConnectionString());//不要释放连接,因为后面还需要连接打开状态
        SqlCommand cmd = conn.CreateCommand();
        conn.Open();
        cmd.CommandText = sqlText;
        if (parameters != null)
        { 
        cmd.Parameters.AddRange(parameters);
        }
        //CommandBehavior.CloseConnection当SqlDataReader释放的时候,顺便把SqlConnection对象也释放掉
        return cmd.ExecuteReader(CommandBehavior.CloseConnection);
    }

    public static SqlDataReader ExecuteReader1(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
    {
        SqlCommand cmd = new SqlCommand();
        SqlConnection conn = new SqlConnection(GetSqlConnectionString());
        cmd.CommandTimeout = 1800;
        // we use a try/catch here because if the method throws an exception we want to 
        // close the connection throw code, because no datareader will exist, hence the 
        // commandBehaviour.CloseConnection will not work
        try
        {
            PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
            SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            cmd.Parameters.Clear();
            return rdr;
        }
        catch
        {
            conn.Close();
            throw;
        }
    }

    private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
    {

        if (conn.State != ConnectionState.Open)
            conn.Open();

        cmd.Connection = conn;
        cmd.CommandText = cmdText;

        if (trans != null)
            cmd.Transaction = trans;

        cmd.CommandType = cmdType;

        if (cmdParms != null)
        {
            foreach (SqlParameter parm in cmdParms)
                cmd.Parameters.Add(parm);
        }
    }
}

 

标签:parameters,C#,数据库,cmd,SQLServer,System,SqlConnection,using,conn
From: https://www.cnblogs.com/ydc2023/p/16996080.html

相关文章

  • [leetcode]第 5 天 查找算法(中等)
    04.二维数组中的查找思路直接遍历!两个for循环classSolution{publicbooleanfindNumberIn2DArray(int[][]matrix,inttarget){for(int[]row:mat......
  • Go/Python 基于gRPC传输图片
    python程序作为服务端,Go程序作为客户端,基于gPRC进行通信客户端定义proto文件:syntax="proto3";optiongo_package=".;transfer";serviceGreeter{rpcSendI......
  • TypeError: Assignment to constant variable
    场景: 使用跨组件通信时,想通过重置父组件的值时,浏览器报错TypeError:AssignmenttoconstantvariableES6标准引入了新的关键字const来定义常量,const与let都具有块......
  • cartographer 源码解析(六)
    这一章节呢,主要讲外推器。我们上一章节说到激光的畸变与矫正,最关键的是什么呢?其实最关键的就是关于每个发射点的发射位置的估计推测,这里就用到了外推器去推测每个发射点的位......
  • C++ 犯错修改指南
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录​​前言​​​​2.SegmentationFault​​​​3.symbollookuperror:xxxundefinedsymbolxxx......
  • CMake实践(二)
    fPICadd_compile_options(-fPIC)​​大概意思是缺少-fPIC这个编译参数​​​​https://cxyzjd.com/article/winafa/114847300​​-fuse-ld=goldset(CMAKE_SHARED_LINKER_F......
  • 论文领读:You Only Look Once:Unified,Real-Time Object Detection
    ​​首先了解一下什么是YOLO​​原文翻译:我们提供了一种新的目标检测的方法YOLO。先前在目标检测的工作将分类器重新定义来执行检测。相反,我们将目标检测定义为一个时空分......
  • HDU-Red and Black
     ProblemDescriptionThereisarectangularroom,coveredwithsquaretiles.Eachtileiscoloredeitherredorblack.Amanisstandingonablacktile.Froma......
  • JavaScript
    1、什么是JavaScriptJavaScript是一门世界上最流行的脚本语言Java、JavaScript没有任何关系,当初为了热门,所以在Script前面加上Java~~10天~一个合格的程序员,必须要精通......
  • C#解析XML字符串
    stringsql="实际sql语句";DataTablesourseDt=OracleHelper.ExecuteDataTable(sql);for(vari=0;i<sourseDt.Rows.Count;i++)......