using Model;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace DAL
{
public static class SqlHelper
{
//public static string conStr = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString.ToString();
public static string conStr = "server=***;uid=sa;pwd=******;database=TripMaster"; /// <summary>
/// 用一个sql语句和可变的SQLParameter数组增删改数据库的数据并且返回受影响的行数,当受影响行数为0时返回的是负数
/// </summary>
/// <param name="cmdStr">sql语句</param>
/// <param name="sqlParams">params形的变量数组</param>
/// <returns>返回受影响的行数</returns>
public static int ExecuteNonQuery(string cmdStr, params SqlParameter[] sqlParams)
{
using (SqlConnection con = new SqlConnection(conStr))
{
using (SqlCommand cmd = new SqlCommand(cmdStr, con))
{
if (sqlParams != null)
{
cmd.Parameters.AddRange(sqlParams);
}
con.Open();
return cmd.ExecuteNonQuery(); }
}
} /// <summary>
/// 使用一个sql语句来查找数据库,返回查找数据的第一行第一列的数据
/// </summary>
/// <param name="cmdStr">sql语句</param>
/// <param name="sqlParams">params形式的SqlParameters数组</param>
/// <returns>返回所查找信息第一行第一列的数据,类型未知,所以用object接收</returns>
public static object ExecuteScalar(string cmdStr, params SqlParameter[] sqlParams)
{
using (SqlConnection con = new SqlConnection(conStr))
{
using (SqlCommand cmd = new SqlCommand(cmdStr, con))
{
if (sqlParams != null)
{
cmd.Parameters.AddRange(sqlParams);
}
con.Open();
return cmd.ExecuteScalar(); }
}
} /// <summary>
/// 使用一个sql语句查找数据返回一个dataTable;
/// </summary>
/// <param name="cmdStr">sql语句</param>
/// <param name="sqlParams">params形式的SqlParameter数组</param>
/// <returns>返回一张表DataTable</returns>
public static DataTable ExecuteDataTable(string cmdStr, params SqlParameter[] sqlParams)
{
using (SqlConnection con = new SqlConnection(conStr))
{
using (SqlCommand cmd = new SqlCommand(cmdStr, con))
{
con.Open();
if (sqlParams != null)
{
cmd.Parameters.AddRange(sqlParams);
}
using (SqlDataAdapter dataAdapter = new SqlDataAdapter(cmd))
{
DataTable dt = new DataTable();
dataAdapter.Fill(dt);
return dt;
}
} }
} /// <summary>
/// 使用一个sql语句查找数据库信息,返回一个SqldataReader,封装这一个方法时要注意,cmd是可以关闭的,
/// 而适配器在读取数据的时候con是不能关闭的
/// 所以要在适配器的创建里面加上参数System.Data.CommandBehavior.CloseConnection,
/// 这个参数的意思是当适配器关闭的时候顺便也关闭con,就是con直到不再从数据库读取数据时才可以关闭
/// </summary>
/// <param name="cmdStr">sql语句</param>
/// <param name="sqlParams">params形式的SqlParameters数组</param>
/// <returns>返回一个SqlDatareader可以进行读取数据</returns>
public static SqlDataReader ExecuteReader(string cmdStr, params SqlParameter[] sqlParams)
{
SqlConnection con = new SqlConnection(conStr);
using (SqlCommand cmd = new SqlCommand(cmdStr, con))
{
if (sqlParams != null)
{
cmd.Parameters.AddRange(sqlParams);
}
try
{
con.Open();
SqlDataReader reader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
return reader;
}
catch
{
con.Close();
con.Dispose();
throw;//不抛出这个就会报错
}
finally
{ }
} } public static int ExcuteAddMany(string cmdStr, string[] tempArray, params SqlParameter[] sqlParams)
{
DataTable table = new DataTable();
table.Columns.Add("Name");
table.Columns.Add("LayerNum"); for (int i=0; i<tempArray.Length;i++)
{
DataRow row = table.NewRow();
row["Name"] = tempArray[i].ToString();
row["LayerNum"] = 0;
table.Rows.Add(row);
} string connectionStr = "server=PC-201701130905\\B;uid=sa;pwd=s07j08b11;database=TripMaster";
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionStr))
{
bulkCopy.BatchSize = table.Rows.Count;
bulkCopy.DestinationTableName = "SQLBulkCopyTest";//在插入的目标表
//DataTable列名与数据库列名的映射
bulkCopy.ColumnMappings.Add("LayerNum", "LayerNum");
bulkCopy.ColumnMappings.Add("Name", "Name");
bulkCopy.WriteToServer(table);//写入到数据库中
}
return 1; } }
}

  

SqlHelper分享的更多相关文章

  1. 不该活着的SqlHelper和DBHelper

    前言: 还记得刚学ADO.NET的情景么? 还记得当年是怎么从ADO.NET被忽悠到用SqlHelper的么? 话说从入门到走上工作岗位那些年,我们就一直被纯纯地教导或引导,ADO.NET太原始,得封 ...

  2. 分享一个html+js+ashx+easyui+ado.net权限管理系统

    EasyUI.权限管理 这是个都快被搞烂了的组合,但是easyui的确好用,权限管理在项目中的确实用.一直以来博客园里也不少朋友分享过,但是感觉好的要不没源码,要不就是过度设计写的太复杂看不懂,也懒得 ...

  3. SQLHelper

    今天学习了.net后,经过老师的一番讲解,似乎对它越来越渴望了,希望自己在接下来的学习当中,能很好的驾驭.net,加油吧, 下面我分享一个操作SQL数据库的代码大全,谢谢观赏.嘿嘿,还是比较长的哦, ...

  4. ADO.NET复习——自己编写SqlHelper类

    今天复习了一次ADO.NET基础,整理一下自己的认为的重点: 编写SqlHelper类,方便我们执行数据库语句,这时可以直接调用封装在SqlHelper类的方法.现在大多数公司面试的时候,给你的面试题 ...

  5. 使用 Microsoft.ApplicationBlocks.Data SqlHelper 查询超时以及解决方案

     提示: 后面附有文件,不喜欢看吐槽的,直接到文章结尾下载 摘要:Data Access Application Block 是一个 .NET 组件,包含优化的数据访问代码,可以帮助用户调用存储过程以 ...

  6. 自用LogSystem入库分享

    .mytitle { background: #2B6695; color: white; font-family: "微软雅黑", "宋体", "黑 ...

  7. 使用C#编写SqlHelper类

    无聊的周末,学习.编码无力.想找点事干但又不知道干点什么,猛然发现自己学过的SqlHelper快忘记了.于是乎虎躯一震心想怎能如此堕落下去,立马打开电脑,双手摸上键盘.写下此文作为学习过程中的复习,并 ...

  8. 快速拥有各种数据访问SqlHelper

    常加班食不按时,偶得清闲嘴溃疡. 美食一顿成泡汤,自此自认忙命人. 这就是此情此景的我,回来聊代码. 列举ADO.NET中的五个主要对象,并简单描述? 答:Connection连接对象,Command ...

  9. 分享 Xamarin.android 关于使用SQLiteOpenHelper的小白经验

    关于使用SQLiteOpenHelper的使用,对于小白的我,百度啦相当多的大神的介绍,均未能让我这新手(零基础)成功学会,参考了http://www.cnblogs.com/yaozhenfa/p/ ...

随机推荐

  1. Quartz.NET作业调度框架的简单应用

    概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔(或天)来调度作业.它实现了 ...

  2. Typescript知识梳理

    概述 TypeScript简称TS,具有类型系统,且是JavaScript的超集. 它可以编译成普通的JavaScript代码.TypeScript支持任意浏览器,任意环境,任意系统并且是开源的.通过 ...

  3. JavaScript动态加载CSS和JS文件

    var dynamicLoading = { css: function(path){ if(!path || path.length === 0){ throw new Error('argumen ...

  4. Python_模块介绍

    模块:一组或者一个.py文件实现了某个功能的代码集合 模块分为三种: 自定义模块 内置标准模块(又称标准库):Python自带的模块 开源模块:自己写的模块,有可以供人使用的功能 开源模块的集散地:P ...

  5. FATAL ERROR: please install the following Perl modules before executing ./mysql_install_db: Data::Dumper

    今天安装本地数据库,所遇到的错误 FATAL ERROR: please install the following Perl modules before executing ./mysql_ins ...

  6. bug管理

    BUG提交规范 1.标题 2.步骤描述 ①.步骤使用序号编排 ②.在特定情况下发生的问题,还需提供准确的前提条件 ③.精准的描述bug产生的路径后,再描述现象 如: >打开客户端进行首页-> ...

  7. P2024 [NOI2001]食物链 并查集

    题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B 吃 C,C 吃 A. 现有 N 个动物,以 1 - N 编号.每个动物都是 A,B,C 中的一种,但是我 ...

  8. Hadoop |集群的搭建

    Hadoop组成 HDFS(Hadoop Distributed File System)架构概述 NameNode目录--主刀医生(nn):  DataNode(dn)数据: Secondary N ...

  9. HDU 5178 pairs【二分】||【尺取】

    <题目链接> 题目大意: 给定一个整数序列,求出绝对值小于等于k的有序对个数. 解题分析: $O(nlong(n))$的二分很好写,这里就不解释了.本题尺取$O(n)$也能做,并且效率很不 ...

  10. [dotnet core]使用Peach简化Socket网络通讯协议开发

    Peach是基于DotNetty的Socket网络通讯帮助类库,可以帮助开发者简化使用DotNetty,关于DotNetty可参考我之前的这篇文章. Peach内置实现了一个基于文本协议的Comman ...