C#语言SqlClient接口SQL Server数据库类
来源:互联网 发布:ios软件开发是什么 编辑:程序博客网 时间:2024/05/21 11:24
这是这学期做ASP.NET课作业时手痒写的SQL数据库类,微软支持4种数据库接口(SqlClient、OLE DB、ODBC、OracleClient)操作,因为平时学习用SQL Server 数据库比较多,所以暂时只写了SqlClient接口的SQL Server数据库操作类,以后要用别的数据库可能会类比着再补充进来吧。
using System;using System.Data;using System.Data.SqlClient;namespace IDataBase{ public class SQLServer { /// <summary> /// 数据库连接字符串 /// </summary> public string ConnectionString { get; set; } /// <summary> /// 上一次数据库异常 /// </summary> public string sqlException { get; set; } SqlConnection sqlConn; SqlCommand sqlCmd; SqlDataReader reader; DataSet ds; SqlCommandBuilder cmdBuilder; SqlDataAdapter adapter; /// <summary> /// 创建一个SQL数据库实例,在设置ConnectionString属性之前无法连接到数据库 /// </summary> public SQLDB() {} /// <summary> /// 用给定数据库连接字符串创建SQL数据库实例 /// </summary> /// <param name="connectionString"></param> public SQLDB(string connectionString) { ConnectionString = connectionString; sqlConn = new SqlConnection(ConnectionString); } /// <summary> /// 用SQL server身份验证方式创建SQL数据库实例,若不使用SQLserver2000应在server后加访问端口“,2317”或“\SQLExpress” /// </summary> /// <param name="AttachDBFilename"></param> /// <param name="server"></param> /// <param name="DataBase"></param> /// <param name="uid"></param> /// <param name="pwd"></param> public SQLDB(string server ,string DataBase, string uid, string pwd, string AttachDBFilename = null) { SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(); if (AttachDBFilename != null) { builder.AttachDBFilename = AttachDBFilename; } builder.DataSource = server; builder.InitialCatalog = DataBase; builder.UserID = uid; builder.Password = pwd; ConnectionString = builder.ConnectionString; sqlConn = new SqlConnection(ConnectionString); } /// <summary> /// 用SQL server身份验证方式连接默认数据库创建SQL数据库实例,若不使用SQLserver2000应在server后加访问端口“,2317”或“\SQLExpress” /// </summary> /// <param name="AttachDBFilename"></param> /// <param name="server"></param> /// <param name="uid"></param> /// <param name="pwd"></param> public SQLDB(string server, string uid, string pwd, string AttachDBFilename) { SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(); builder.AttachDBFilename = AttachDBFilename; builder.DataSource = server; builder.UserInstance = true; builder.UserID = uid; builder.Password = pwd; ConnectionString = builder.ConnectionString; sqlConn = new SqlConnection(ConnectionString); } /// <summary> /// 用windows身份验证方式创建SQL数据库实例,若不使用SQLserver2000应在server后加访问端口“,2317”或“\SQLExpress” /// </summary> /// <param name="server"></param> /// <param name="DataBase"></param> /// <param name="AttachDBFilename"></param> public SQLDB(string server, string DataBase ,string AttachDBFilename = null) { SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(); if( AttachDBFilename != null ) { builder.AttachDBFilename = AttachDBFilename; } builder.DataSource = server; builder.InitialCatalog = DataBase; builder.IntegratedSecurity = true; ConnectionString = builder.ConnectionString; sqlConn = new SqlConnection(ConnectionString); } /// <summary> /// 用windows身份验证方式连接默认数据库创建SQL数据库实例,若不使用SQLserver2000应在server后加访问端口“,2317”或“\SQLExpress” /// </summary> /// <param name="server"></param> /// <param name="AttachDBFilename"></param> public SQLDB(string server, string AttachDBFilename) { SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(); builder.AttachDBFilename = AttachDBFilename; builder.DataSource = server; builder.UserInstance = true; builder.IntegratedSecurity = true; ConnectionString = builder.ConnectionString; sqlConn = new SqlConnection(ConnectionString); } /// <summary> /// 使用SQL连接字符串编辑器完成连接字符串的微调,并用创建的连接字符串创建数据库实例 /// </summary> /// <param name="sqlConnStrBuilder"></param> public SQLDB(SqlConnectionStringBuilder sqlConnStrBuilder) { ConnectionString = sqlConnStrBuilder.ConnectionString; sqlConn = new SqlConnection(ConnectionString); } /// <summary> /// 打开SQL数据库连接 /// </summary> /// <returns></returns> private bool openConnection() { try { sqlConn.Open(); return true; } catch (Exception e) { sqlException = e.ToString(); return false; } } /// <summary> /// 关闭SQL数据库连接 /// </summary> private void closeConnection() { sqlConn.Close(); } /// <summary> /// 执行SQL命令 /// </summary> /// <param name="cmd"></param> private bool excuteCmd() { try { openConnection(); sqlCmd.ExecuteNonQuery(); closeConnection(); return true; } catch (Exception e) { sqlException = e.ToString(); return false; } } /// <summary> /// 执行sql语句,成功返回true,失败返回false /// </summary> /// <param name="cmd"></param> /// <returns></returns> public bool runSqlCmd(string cmd) { sqlCmd = new SqlCommand(cmd); return excuteCmd(); } /// <summary> /// 由用户自行生成一条sql命令并执行 /// </summary> /// <param name="cmd"></param> /// <returns></returns> public bool runSqlCmd(SqlCommand cmd) { sqlCmd = cmd; return excuteCmd(); } /// <summary> /// 按sql查询语句获得目标数据表的数据,返回DataTable。 /// </summary> /// <param name="sqlQuery"></param> /// <returns></returns> public DataTable getDataTableBySQL(string sqlQuery) { ds = new DataSet(); adapter = new SqlDataAdapter(sqlQuery, sqlConn); cmdBuilder = new SqlCommandBuilder(adapter); openConnection(); adapter.Fill(ds); closeConnection(); return ds.Tables[0]; } /// <summary> /// 获得目标数据表的数据,返回DataTable。 /// </summary> /// <param name="tableName"></param> /// <returns></returns> public DataTable getDataTableByName(string tableName) { ds = new DataSet(); adapter = new SqlDataAdapter("select * from "+tableName,sqlConn); cmdBuilder = new SqlCommandBuilder(adapter); openConnection(); adapter.Fill(ds,tableName); closeConnection(); return ds.Tables[tableName]; } /// <summary> /// 将数据库中指定的一或多个数据表填入DataSet并返回。 /// </summary> /// <param name="sqlQuery"></param> /// <returns></returns> public DataSet getDataSet(string[] tableNameArray) { ds = new DataSet(); openConnection(); foreach (string i in tableNameArray) { adapter = new SqlDataAdapter("select * from "+i, sqlConn); cmdBuilder = new SqlCommandBuilder(adapter); adapter.Fill(ds,i); } closeConnection(); return ds; } /// <summary> /// 执行带1个参数的sql插入语句。sql语句中的参数名,与对应parameterName的值都请用“@para”的格式。成功返回true,失败返回false。 /// </summary> /// <param name="sql"></param> /// <param name="parameterName"></param> /// <param name="dbType"></param> /// <param name="value"></param> /// <returns></returns> public bool insert(string sql, string parameterName, SqlDbType dbType , int size, object value) { try { openConnection(); sqlCmd = new SqlCommand(); sqlCmd.Parameters.Add(parameterName, dbType, size); sqlCmd.Parameters[parameterName].Value = value; sqlCmd.ExecuteNonQuery(); closeConnection(); return true; } catch (Exception e) { sqlException = e.ToString(); return false; } } /// <summary> /// 生成一个指定数据表的空数据列 /// </summary> /// <param name="tableName"></param> /// <returns></returns> public DataRow creatDataRow(string tableName) { ds = new DataSet(); adapter = new SqlDataAdapter("select * from "+tableName, sqlConn); cmdBuilder = new SqlCommandBuilder(adapter); openConnection(); adapter.Fill(ds, tableName); closeConnection(); return ds.Tables[tableName].NewRow(); } /// <summary> /// 向指定数据表插入数据列,空数据列可以用当前类的creatDataRow方法获得。成功返回true,失败返回false。 /// </summary> /// <param name="tableName"></param> /// <param name="row"></param> /// <returns></returns> public bool insert(string tableName, DataRow row) { try { ds = new DataSet(); adapter = new SqlDataAdapter("select * from "+tableName, sqlConn); cmdBuilder = new SqlCommandBuilder(adapter); openConnection(); adapter.Fill(ds, tableName); ds.Tables[tableName].Rows.Add(row.ItemArray); adapter.Update(ds, tableName); closeConnection(); return true; } catch (Exception e) { sqlException = e.ToString(); return false; } } /// <summary> /// 执行带1个参数的sql更新语句。sql语句中的参数名,与对应parameterName的值都请用“@para”的格式。成功返回true,失败或没找到指定行返回false。 /// </summary> /// <param name="sql"></param> /// <param name="parameterName"></param> /// <param name="dbType"></param> /// <param name="size"></param> /// <param name="value"></param> /// <returns></returns> public bool update(string sql, string parameterName, SqlDbType dbType, int size, object value) { try { openConnection(); sqlCmd = new SqlCommand(); sqlCmd.Parameters.Add(parameterName, dbType, size); sqlCmd.Parameters[parameterName].Value = value; if (sqlCmd.ExecuteNonQuery() == 0) { closeConnection(); return false; } closeConnection(); return true; } catch (Exception e) { sqlException = e.ToString(); return false; } } /// <summary> /// 用当前类的getDataSet方法获取指定数据表,修改后用本方法批量地更新指定数据表。成功返回true,失败返回false。 /// </summary> /// <param name="tableName"></param> /// <param name="dataSet"></param> /// <returns></returns> public bool update(string tableName, DataSet dataSet) { try { adapter = new SqlDataAdapter("select * from "+tableName, sqlConn); cmdBuilder = new SqlCommandBuilder(adapter); openConnection(); adapter.Update(dataSet); closeConnection(); return true; } catch (Exception e) { sqlException = e.ToString(); return false; } } /// <summary> /// 返回指定数据表的指定列中是否存在指定值 /// </summary> /// <param name="tableName"></param> /// <param name="columnName"></param> /// <param name="value"></param> /// <returns></returns> public bool existInTable(string tableName, string columnName, string value) { sqlCmd = new SqlCommand("select * from "+tableName+" where "+columnName+"='"+value+"'",sqlConn); openConnection(); reader = sqlCmd.ExecuteReader(CommandBehavior.SingleResult); bool exist = reader.HasRows; reader.Close(); closeConnection(); return exist; } /// <summary> /// 返回指定数据表的指定列中有多少个指定值 /// </summary> /// <param name="tableName"></param> /// <param name="columnName"></param> /// <param name="value"></param> /// <returns></returns> public int countInTable(string tableName, string columnName, string value) { sqlCmd = new SqlCommand("select * from " + tableName + " where " + columnName + "='" + value + "'", sqlConn); openConnection(); reader = sqlCmd.ExecuteReader(CommandBehavior.SingleResult); int count = 0; if (reader.HasRows) { while (reader.Read()) { count++; } } reader.Close(); closeConnection(); return count; } /// <summary> /// DataReader使用完毕必须用当前类的close方法将DataReader关闭,并关闭数据库连接 /// </summary> /// <param name="sql"></param> /// <returns></returns> public SqlDataReader select(string sql) { sqlCmd = new SqlCommand(sql, sqlConn); openConnection(); reader = sqlCmd.ExecuteReader(); return reader; } /// <summary> /// 如果本类提供的DataReader未关闭,将其关闭,同时关闭未关闭的数据库连接 /// </summary> public void close() { if (!reader.IsClosed) { reader.Close(); } sqlConn.Close(); } }}
这个类虽然也有不满意的地方,但是写得挺认真的,自己觉得格式还是挺工整。
0 0
- C#语言SqlClient接口SQL Server数据库类
- C#语言 SqlClient接口SQL Sever数据库类+OleDb接口Access数据库类
- Windows Mobile 连接SQL SERVER数据库 SqlClient
- log4net配置写入SQL Server数据库(sqlserver-sqlclient) 并传入自定义业务对象
- log4net配置写入SQL Server数据库(sqlserver-sqlclient) 并传入自定义业务对象
- log4net配置写入SQL Server数据库(sqlserver-sqlclient) 并传入自定义业务对象
- C#语言和SQL Server数据库技术_数据库查询基础
- C#操作数据库简介之SqlClient模式
- SQL SERVER C#数据库操作类
- sql server C#数据库操作类(转)
- C#操作sql server 数据库访问类
- c# 数据库操作类sql server篇
- C#操作SQL Server数据库通用类
- C#操作SQL SERVER数据库通用类
- SQL Server 2005 还原数据库错误:System.Data.SqlClient.SqlError: 在对 'd:\Program Files\Microsoft SQL Serv
- C#连接SQL SERVER数据库
- C# 连接SQL Server数据库
- C# 连接SQL Server数据库
- Activity
- Hive语言手册之二:变量替换
- 【经典排序算法】桶排序
- Uva 10079 - Pizza Cutting 解题报告(递推)
- linux中/usr 的由来及/usr目录结构
- C#语言SqlClient接口SQL Server数据库类
- Loki的SingletonHolder解析
- Ant 在Myeclipse8+ 编译java类卡死的解决方案
- log4j总结
- 将hibernate的SessionFactory交给spring管理——东方标准(专注IT、服务中国)续……
- 数据库SQL语句书写注意事项
- 图像特征之LBP 局部二值模式
- 操作json数据
- 【iOS】iOS Object-C与C混编设置