博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库操作类
阅读量:7065 次
发布时间:2019-06-28

本文共 6024 字,大约阅读时间需要 20 分钟。

现在做项目几乎都得用到数据库吧!我用的是Sql Server 2008,具体也没有怎么研究过相关的数据库,不过,平常用到的数据库操作很多,这样我就写了一个数据库的操作类,平常调用起来倒是挺方便的,拿出来给大家分享一下!

具体是怎么写的很容易,每个方法都有一些简单的注释!

View Code
class DataBaseHelper     {
private string serverName; private string datebaseName; private string userName; private string password; /// /// 构造函数,传入一些连接数据库需要的参数 /// /// 数据库的网络地址 /// 数据库名称 /// 数据库的用户名 /// 数据库的密码 public DataBaseHelper(string serverName, string datebaseName, string userName, string password) {
this.serverName = serverName; this.datebaseName = datebaseName; this.userName = userName; this.password = password; } /// /// 平常用到的数据库的连接信息放到这里,直接调用这个函数就可以了 /// ///
返回一个数据库连接
public static DataBaseHelper GetHelper() {
return new DataBaseHelper("127.0.0.1", "databaseName", "username", "password"); } /// /// 得到一个数据库连接,在调用每个操作数据库函数时调用 /// /// 连接超时时间,单位:分 ///
返回一个可用的连接
private SqlConnection getConnection(int timeoutMins) {
return new SqlConnection( string.Format("server={0}; database={1}; uid={2}; pwd={3}; Connection Timeout={4};" , this.serverName, this.datebaseName, this.userName, this.password, timeoutMins * 60)); } /// /// 执行数据库操作 /// /// 需要执行的数据库语句 ///
执行结果
public int ExecuteNonQuery(string sqlStr) {
return ExecuteNonQuery(sqlStr, null); } /// /// 执行数据库操作 /// /// 数据库操作语句 /// 传入的数据参数 ///
返回操作结果
public int ExecuteNonQuery(string sqlStr, List
list) {
SqlConnection sqlConn = getConnection(1); try {
sqlConn.Open(); SqlCommand sqlCom = new SqlCommand(sqlStr, sqlConn); sqlCom.CommandTimeout = 60 * 30; if (list != null) {
foreach (SqlParameter s in list) {
sqlCom.Parameters.AddWithValue(s.ParameterName, s.SqlValue); } } return sqlCom.ExecuteNonQuery(); } catch {
return -1; } finally {
sqlConn.Close(); } } ///
/// 执行读取数据库操作 /// ///
数据库读取操作语句 ///
返回一个reader
public SqlDataReader ExecuteReader(string sqlStr) {
return ExecuteReader(sqlStr, null); } ///
/// 数据库读取操作 /// ///
数据库读取操作语句 ///
传入的操作语句参数 ///
读取之后的reader
public SqlDataReader ExecuteReader(string sqlStr, List
parList) {
SqlDataReader reader = null; SqlConnection sqlConn = getConnection(1); try {
sqlConn.Open(); SqlCommand sqlCom = new SqlCommand(sqlStr, sqlConn); sqlCom.CommandTimeout = 30 * 60; if (parList != null) {
foreach (SqlParameter s in parList) {
sqlCom.Parameters.AddWithValue(s.ParameterName, s.SqlValue); } } reader = sqlCom.ExecuteReader(CommandBehavior.CloseConnection); } catch {
sqlConn.Close(); } return reader; } ///
/// 将datatable里面的数据加入到数据库中,每次操作数据1,2W为宜 /// ///
需要添加到数据库的数据 public void AddToDatabase(DataTable dataTable) {
SqlConnection conn = getConnection(1); try {
conn.Open(); SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(conn); sqlBulkCopy.DestinationTableName = dataTable.TableName; sqlBulkCopy.BulkCopyTimeout = 600; foreach (DataColumn item in dataTable.Columns) {
sqlBulkCopy.ColumnMappings.Add(item.ColumnName, item.ColumnName); } sqlBulkCopy.WriteToServer(dataTable); sqlBulkCopy.Close(); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally {
conn.Close(); } } ///
/// 查看数据库中表的数据量 /// ///
需要查看的数据表 ///
count(*)
public int GetRowCount(string tableName) {
SqlDataReader reader = ExecuteReader("select rows from sysindexes where id = object_id('" + tableName + "') and indid in (0,1)"); if (reader == null) return -1; reader.Read(); return (int)reader["rows"]; } }

之后需要在写道这里的是,怎么用到这个里面的AddToDatabase这个方法,很简单,这个类就可以用到了

View Code
///  /// 测试类 ///      class Test     {
public int para1; public int para2; public int para3; public int para4; public static void AddToDB(Test[] data) {
DataBaseHelper helper = DataBaseHelper.GetHelper(); DataTable dataTable = GetTableSchema(); for (int i = 0; i < data.Length; i++) {
DataRow dataRow = dataTable.NewRow(); dataRow["para1"] = data[i].para1; dataRow["para2"] = data[i].para2; dataRow["para3"] = data[i].para3; dataRow["para4"] = data[i].para4; dataTable.Rows.Add(dataRow); } helper.AddToDatabase(dataTable); dataTable.Clear(); } private static DataTable GetTableSchema() {
DataTable dt = new DataTable("Test"); dt.Columns.Add("para1", typeof(int)); dt.Columns.Add("para2", typeof(int)); dt.Columns.Add("para3", typeof(int)); dt.Columns.Add("para4", typeof(int)); return dt; } }

 

需要说一下经常遇到的问题:

1,GetTableSchema这个函数中用到的dt.Columns.Add("para1", typeof(int));这里的类型很容易搞明白,这里的名字很让人不爽,她严格的要求,必须和你要添加的数据库表的字段名完全一致(区分大小写),否则就等着程序报bug吧!

2,GetTableSchema还是在这个函数里面,如果在数据库里面制定了某一项有默认值,那么在这里面你认为添加这一项多余的话,可以省略。

其他的要说的没有什么了,就这样!

 

记在这里,分享给大家!

转载于:https://www.cnblogs.com/pmars/archive/2011/12/23/2299551.html

你可能感兴趣的文章
Linux 下 Redis 安装详解
查看>>
ActiveMQ第三弹:在Spring中使用内置的Message Broker
查看>>
C#:struct的陷阱:无法修改“xxx”的返回值,因为它不是变量
查看>>
Android WebRTC 音视频开发总结(一)
查看>>
C# 获取 mp3文件信息
查看>>
如何转换SQL Server 2008数据库到SQL Server 2005
查看>>
cocos2dx 常见的22种特效 3D特效
查看>>
WinForm触摸屏程序功能界面长时间不操作自动关闭回到主界面 z
查看>>
[译]MVC网站教程(四):MVC4网站中集成jqGrid表格插件(系列完结)
查看>>
angular学习笔记(九)-css类和样式3
查看>>
C#开发微信门户及应用(8)-微信门户应用管理系统功能介绍
查看>>
Oracle由ID生成父ID的函数
查看>>
互斥量和条件变量的区别
查看>>
Lambda 表达式的示例
查看>>
poj 1002:487-3279(水题,提高题 / hash)
查看>>
查询/新建/修改本地用户和组
查看>>
iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist)
查看>>
04 对象与类
查看>>
使用jQuery Mobile和Phone Gap开发Android应用程序
查看>>
Win7激活后添加grub引导Linux最简单方法
查看>>