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. 【转】Crosswalk入门

    原文:https://www.mobibrw.com/2015/1934 Crosswalk是一款开源的web引擎.目前Crosswalk正式支持的移动操作系统包括Android和Tizen,在And ...

  2. luogu1355 神秘大三角

    题解: 计算几何入门题 按逆时针方向访问三角形的边 然后作叉积判断点是否在边的顺时针方向 叉积和点积都有分配率 但不满足结合律 代码: #include <bits/stdc++.h> u ...

  3. Visual Studio 中使用万能头文件 #include <bits/stdc++.h>

    最近开始使用VS,之前用的DEV C++软件可直接使用 #include <bits/stdc++.h>  ,但VS中并没有,为了使用方便,可直接在VS中添加此头文件,方法如下: 1.在安 ...

  4. Shell文本处理四剑客

    5.1 [grep] 全面搜索正则表达式(GREP)是一种强大的文本搜索工具,能使用正则 表达式搜索文本,并把匹配的行打印出来 过滤来自一个文件或标准输入匹配模式内容 除了grep外,还有egrep, ...

  5. BZOJ3295 [Cqoi2011]动态逆序对 分治 树状数组

    原文链接http://www.cnblogs.com/zhouzhendong/p/8678185.html 题目传送门 - BZOJ3295 题意 对于序列$A$,它的逆序对数定义为满足$i< ...

  6. L1-006 连续因子 (20 分) 模拟

    一个正整数 N 的因子中可能存在若干连续的数字.例如 630 可以分解为 3×5×6×7,其中 5.6.7 就是 3 个连续的数字.给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的 ...

  7. 20165235 祁瑛 2018-4 《Java程序设计》第八周学习总结

    20165235 祁瑛 2018-4 <Java程序设计>第八周学习总结 教材学习内容总结 操作系统与进程 程序是一段静态的代码,它是应用软件执行的蓝本.进程是程序的一次动态执行过程,它对 ...

  8. sql取逗号前后数据与批量修改某一字段某一值

    sql取逗号后的值 SELECT SUBSTRING_INDEX(字段,) FROM 表名 sql取逗号前的值 SELECT SUBSTRING_INDEX(字段,) FROM 表名 批量修改 UPD ...

  9. vim 命令图解

    vim 命令,vim是一个很好的编辑工具,下面为大家介绍一下vim入门基本命令. 方法/步骤   1 [vim 命令-启动vimtutor]:执行命令:vimtutor.vimtutor是vim使用入 ...

  10. 不利用C语言库函数,实现字符串相关函数

    #include<stdio.h> int strLength(char* s)//求字符长度 { ; while(s[i]!=NULL) { i++; } return i; } int ...