DBHelper
三层架构中常用方法的封装
三层架构中常用方法的封装
学习内容: 1.非空验证
2.日期有效性验证
3.DbHelper封装CRUD
重点难点:DbHelper数据访问的常用方法
教学过程
知识点1、数据验证的必要性及常用方法
2、DbHelper封装所带来的编码效率的提升
一、复习常用业务对象
DataSet的内部结构
DataTable、DataRow、DataColumn的相互关系
DataView的使用和数据过滤方法
二、非空数据验证
1、为什么需要数据验证
2、如何判断各个WinForm输入控件的非空状态
演示IsNotNullInputValidate()函数的使用
三、数字和日期有效性验证
1、数字有效性验证方法InputIsNumberValidate()函数演示
2、日期有效性验证方法InputIsDateInvalidate()函数演示
拓展其它需要数据验证的地方,例如比较验证、编号不重复验证(取数据库值)等,只大概讲解实现思路,不演示
四、封装DbHelper类
1、找前期做过的数据库增删改查的例子,总结里面有多少代码是重复的,讲解函数的抽取思路并简单演示ExecuteNoneQuery方法放到DbHelper类
2、演示ExecuteReader方法放到DbHelper类
3、演示数据查询的DbHelper方法
拓展可能有的方法,例如查询分页,带参数的查询等,大概讲解实现思路,不演示。
五、总结,布置作业。
三层架构是指哪三层
1.三层架构是指哪三层界面(视图)层业务层数据访问(持久层)2.为什么使用三层职责划分清楚,各司其职,各层配合例如:发现sql语句写错了,sql语句的定义一定在dao层3.上层如何将数据传递给下层例如:数据从界面如何传给业务数据如何从业务传给dao方法:要将数据传给谁,就new谁的对象,然后用new出来的对象调用方法,数据作为方法参数传递4.下层如何将数据传递给上层下层通过返回值将数据传递给上层5.各层中都写什么代码5.1.界面层界面层主要职责是输入和输出5.2.业务层编写控制业务流程的代码,通常是很多if语句来控制业务流程,是核心层例如:业务:用银行卡取钱业务流程1:判断卡是否是银行卡2:验证卡号和密码是否正确3:验证卡是否被冻结4:判断余额是否够用5:是否跨行6:是否跨地区7:开始取钱5.3.数据访问层5.3.1.Dao1.拼写sql语句2.为sql语句的参数准备值3.发送sql和值到dbheleprDao程序编写的模板public int save(User user) throws Exception{Try{拼写sql准备值调用dbhelpoer执行sql}catcha(Exception e){异常处理,将异常抛出}Finally{Dbheleper.close()}}5.3.2.dbHelper执行sql语句6.三层示例6.1.需求1:实现添加商品2:商品的列表显示6.2.准备开发环境6.2.1.数据库环境CREATE DATABASE threelayer;USE threelayer;CREATE TABLE product(id INT AUTO_INCREMENT PRIMARY KEY,productName VARCHAR(30),price DOUBLE);6.2.2.Java环境同一个项目中,每个开发人员的各个环境的版本必须一致1.Jdk的版本:1.82.Eclipse的版本:Kepler3.Jar包:a)Mysql数据库的驱动jarb)Junit的jar6.2.3.创建java项目项目命名为threelayer11266.2.4.分包edu.xbmu.threelayer.view :界面层edu.xbmu.threelayer.service :业务层edu.xbmu.threelayer.dao :数据访问层edu.xbmu.threelayer.pojo :实体类6.2.5.准备DBHelper(其实你可以拷贝)6.3.需求1:添加商品6.3.1.开发实体类6.3.2.开发界面层在view包中创建表示界面的类,命名为ProductView6.3.3.开发业务层6.3.4.开发dao层6.3.5.单元测试6.4.需求2:查看所有的商品6.4.1.开发dao6.4.2.开发service6.4.3.开发视图6.4.4.单元测试11 / 11。
androidstudio数据库查询语句
androidstudio数据库查询语句Android Studio是一种集成开发环境(IDE),用于开发Android应用程序。
在Android应用程序开发中,数据库查询是非常重要的一环。
本文将一步一步地回答关于Android Studio数据库查询语句的问题。
第一步:什么是数据库查询语句?数据库查询语句是一种用于从数据库中检索数据的命令。
它可以选择性地检索特定的数据,并可以对数据进行排序、过滤和聚合等操作。
数据库查询语句是通过使用SQL(结构化查询语言)编写的。
第二步:如何在Android Studio中执行数据库查询语句?在Android Studio中,可以使用SQLite数据库进行数据存储和查询。
SQLite 是一种轻量级的数据库引擎,适用于Android应用程序开发。
首先,在Android Studio中创建数据库。
可以使用SQLiteOpenHelper类来创建数据库和表,并在onCreate()方法中执行所需的数据库创建和初始化操作。
javapublic class DatabaseHelper extends SQLiteOpenHelper {private static final String DATABASE_NAME = "mydatabase.db";private static final int DATABASE_VERSION = 1;public DatabaseHelper(Context context) {super(context, DATABASE_NAME, null, DATABASE_VERSION);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("CREATE TABLE IF NOT EXISTS mytable (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)");}...}然后,在需要执行数据库查询语句的地方,获取一个可读的数据库实例,并使用rawQuery()方法执行查询语句。
SqlServerDBHelper类
SqlServerDBHelper类using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.SqlClient;namespace DAL{/// <summary>/// 连接数据库类/// </summary>public class SqlServerDBHelper{/// <summary>/// 连接数据库/// </summary>/// <returns></returns>public static SqlConnection GetConnection(){string conString = System.Configuration.ConfigurationManager.ConnectionStrings["connstring"].ToString();//定义连接数据库字符集 return new SqlConnection(conString);//返回连接数据库对象}/// <summary>/// ⽤数据填充的⽅法查询/// </summary>/// <param name="type"></param>/// <param name="sql"></param>/// <param name="pares"></param>/// <returns></returns>public DataSet GetDataSet(CommandType type, string sql, params SqlParameter[] pares){SqlConnection con = GetConnection();DataSet ds = new DataSet();SqlDataAdapter da = new SqlDataAdapter(sql, con);mandType = type;if (pares != null){foreach (SqlParameter pare in pares){da.SelectCommand.Parameters.Add(pare);}}da.Fill(ds);return ds;}public DataSet GetDataSet(string sql, params SqlParameter[] pares){return GetDataSet(CommandType.Text, sql, pares);}public SqlDataReader GetSqlDataReader(CommandType type, string sql,out SqlConnection con, params SqlParameter[] pares){con = GetConnection();SqlCommand cmd = new SqlCommand(sql, con);mandType = type;con.Open();if (pares != null){foreach (SqlParameter pare in pares){cmd.Parameters.Add(pare);}}return cmd.ExecuteReader(CommandBehavior.CloseConnection);}public SqlDataReader GetSqlDataReader(string sql,out SqlConnection con, params SqlParameter[] pares) {return GetSqlDataReader(CommandType.Text, sql,out con, pares);}public bool MidfyDB(CommandType type, string sql, params SqlParameter[] pares){bool falg = false;SqlConnection con = GetConnection();SqlCommand cmd = new SqlCommand(sql, con);mandType = type;if (pares != null){foreach (SqlParameter pare in pares){cmd.Parameters.Add(pare);}}SqlTransaction trans = null;try{con.Open();trans = con.BeginTransaction();cmd.Transaction = trans;cmd.ExecuteNonQuery();mit();falg = true;}catch (Exception e){trans.Rollback();throw e;}finally{con.Close();}return falg;}public bool MidfyDB(string sql, params SqlParameter[] pares){return MidfyDB(CommandType.Text, sql, pares);}/// <summary>/// 查询聚合函数类/// </summary>/// <param name="type">数据库操作的类型如:StoredProcedure(存储过程)、Text(⽂本)</param>/// <param name="sql">数据库操作字符集</param>/// <param name="paras">查询数据库时所⽤的参数</param>/// <returns>object(⼀般为单个值)</returns>public object GetScalar(CommandType type, string sql, params SqlParameter[] paras){SqlConnection con = GetConnection();//创建数据集对象SqlCommand cmd = new SqlCommand(sql, con);//操作数据库对象mandType = type;//数据库操作的类型//如果参数不为空if (paras != null){//遍历参数数组foreach (SqlParameter para in paras){cmd.Parameters.Add(para);//给操作数据库对象加上参数}}con.Open();//打开数据库连接object obj = cmd.ExecuteScalar();//返回⼀个⼀⾏⼀列的植con.Close();//关闭数据库连接return obj;}public object GetScalar(string sql, params SqlParameter[] paras){return GetScalar(CommandType.Text, sql, paras);}#region 数据填充DataTablepublic static DataTable DataFill(SqlCommand cmd){DataTable dt = new DataTable();cmd.Connection = GetConnection();SqlDataAdapter _da = new SqlDataAdapter(cmd);_da.Fill(dt);return dt;}#endregion//public DataTable DateTel(string sql)//{// SqlConnection con = GetConnection();// SqlCommand cmd = new SqlCommand(sql, con);// SqlDataAdapter da = new SqlDataAdapter(cmd);// DataTable dt = new DataTable();// da.Fill(dt);// return dt;//}internal DataSet GetDataSet(string sql, int UID){throw new NotImplementedException();}public static SqlCommand GetCommand(string text){SqlCommand cmdObject = new SqlCommand();mandText = text;return cmdObject;}public static void PreparedCommand(SqlCommand cmd, SqlParameter[] pars) {foreach (SqlParameter p in pars){cmd.Parameters.Add(p);}}}}。
三层架构是指哪三层
//Properties是键值对的集合类,父接口是Map
Properties prop = new Properties();
prop.load(inStream);
URL = (String)prop.get("url");
statement.setObject(i+1, values[i]);
}
}
}
/**
*关闭数据库
*/
public void close(){
//关闭库
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
//4:将数据传递给业务层
ProductService productService =newProductService();
inti=0;
try{
i = productService.save(productModel);
}catch(Exception e) {
System.out.println("保存商品出错"+e);
4:判断余额是否够用
5:是否跨行
6:是否跨地区
7:开始取钱
5.3.数据访问层
5.3.1.Dao
1.拼写sql语句
2.为sql语句的参数准备值
3.发送sql和值到dbhelepr
Dao程序编写的模板
public int save(User user) throws Exception{
数据层理解
三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。
业务逻辑层主要调用数据访问层,从数据访问层获得基本的数据,然后跟据需求,做不同的逻辑操作,处理好的数据给表示层。这个层得类主要是实体类的逻辑操作类。
数据访问层就是 凡是要在数据库中增删查该的代码都放在这层,
,,,,,业务逻辑层就是,凡是需要对事件,方法做判断的,都放在这层,也就是判断逻辑
,,,,,界面层(表示层),把界面显示的代码放在这层,
数据层:连接数据库,实现里面的方法.
业务层:调用数据层的方法.
表示层:就几天判断语句很简单.
数据访问层就是专门与数据库进行数据交互的层,常见做法就是写一个DBHelper类,这个类提供数据库连接,数据库命令操作,返回数据,是一个通用的类,然后里面也有很多实体数据库访问类。都是调用DBHelper这个类来与数据库进行操作。
1、表示层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。 2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。 3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。
各层的作用 1:数据数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务. 2:业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。 3:表示层:主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成:aspx, 如果逻辑层相当强大和完善,无论表现层如何Βιβλιοθήκη 义和更改,逻辑层都能完善地提供服务。
android sqlite 插入数据的方法
android sqlite 插入数据的方法在 Android 中使用 SQLite 数据库进行数据插入的方法如下: 1. 创建一个继承自 `SQLiteOpenHelper` 的数据库辅助类,用于创建和管理数据库以及表结构。
在该类中,需要实现 `onCreate()` 方法来创建数据库和表,以及 `onUpgrade()` 方法来处理数据库版本升级。
```javapublic class DBHelper extends SQLiteOpenHelper {private static final String DATABASE_NAME = "mydatabase.db";private static final int DATABASE_VERSION = 1;public DBHelper(Context context) {super(context, DATABASE_NAME, null, DATABASE_VERSION); }@Overridepublic void onCreate(SQLiteDatabase db) {// 创建表结构String createTableQuery = "CREATE TABLE mytable (id INTEGER PRIMARY KEY, name TEXT)";db.execSQL(createTableQuery);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// 处理数据库版本升级if (oldVersion < 2) {// 执行相应的更新操作}}}```2. 在需要插入数据的地方,获取可写入的数据库实例,并使用`insert()` 方法插入数据。
```javaDBHelper dbHelper = new DBHelper(context);SQLiteDatabase db = dbHelper.getWritableDatabase();ContentValues values = new ContentValues();values.put("name", "John Doe");long newRowId = db.insert("mytable", null, values);if (newRowId != -1) {// 插入成功} else {// 插入失败}db.close();```在上述代码中,我们首先实例化了 `DBHelper` 类,并获取了可写入的数据库实例。
C#考试题——精选推荐
选择题1、数据适配器(DataAdapter)对象属于.Net数据提供程序,该对象的()方法用于将DataSet 中数据提交到数据库。
(选择一项)a) closeb) Fillc) Updated) Select2、在中,DataSet对象相当于一个临时的()。
(选择一项)a) 数据表b) 存储过程c) 数据库d) 数据适配器3、 DataSet是中用于存储从数据库检索到的数据的对象,下列关于DataSet 的说法错误的是()(选择一项)a) 在DataSet中可以包含多个DataTableb) DataSet可以简单地理解为一个临时数据库c) 在与数据库断开连接后,DataSet中的数据会消失d) DataSet实际是从数据源中检索到的数据在内存中的缓存4、在中,下列代码运行后的输出结果是()(选择一项)DataTable dt=new DataTable();Dt.Columns.Add(“编号”,typeof(System.Int16));Dt.Columns.Add(“成绩”,typeof(System.Int16));for(int i=1;i<=3;i++){DataRow dr=dt.NewRow();Dr[0]=i;Dr.Rows.Add(dr);}Console.WriteLine(dt.Rows.Count);a) 1b) 2c) 3d) 45、数据适配器(DataAdapter)对象属于.NET数据提供程序,该对象的()方法用于向DataSet中填充数据。
(选择一项)a) Closeb) Fillc)Updated)SelectDataGridView1中显示表carsinfo中数据的代码片段,其中DBHelper.Connection为数据库连接对象。
代码中存在错误的是第()行。
a) 1b) 2c) 3d) 4e)没有错误选择题1、中的Command对象允许向数据库传递请求,以便检索和操作数据库中的对象,下列()方法不是Command对象的方法。
使用DBHelper
使用DBHelper处女作代码o(∩_∩)o...哈哈!使用DBHelper完成数据层的访问及执行public class DBHelper{private static string connString;static DBHelper(){connString = ConfigurationManager.ConnectionStrings["MySchoolConnectio nString"].ToString();}public SqlConnection GetConnection(bool hasOpen){SqlConnection conn = new SqlConnection(connString);if (hasOpen)conn.Open();return conn;}public DataSet GetDataSet(string sql, CommandType cmdType, string dsName){DataSet ds = new DataSet();SqlConnection conn = new SqlConnection(connString);SqlDataAdapter objAdapter = new SqlDataAdapter(sql, conn);mandType = cmdType;objAdapter.Fill(ds, dsName);conn.Close();conn.Dispose();return ds;}public SqlDataReader GetReader(string sql, CommandType cmdType, params SqlParameter[] sqlParams){SqlCommand cmd = new SqlCommand();mandType = cmdType;mandText = sql;if (sqlParams != null)cmd.Parameters.AddRange(sqlParams);SqlConnection conn = GetConnection(true);cmd.Connection = conn;returncmd.ExecuteReader(CommandBehavior.CloseConnection);}public int ExecuteSql(string sql, CommandType cmdType, params SqlParameter[] sqlParams){int ret = 0;SqlCommand cmd = new SqlCommand();mandType = cmdType;mandText = sql;if (sqlParams != null)cmd.Parameters.AddRange(sqlParams);SqlConnection conn = GetConnection(true);cmd.Connection = conn;try{ret = (int)cmd.ExecuteNonQuery();}finally{conn.Close();}return ret;}}调用DBHelper:public class GradeService{#region Private Members//从配置文件中读取数据库连接字符串private readonly string connString = ConfigurationManager.ConnectionStrings["MySchoolConnectio nString"].ToString();private readonly string dboOwner = ConfigurationManager.ConnectionStrings["DataBaseOwner"].T o String();#endregion#region Public Methods/// <summary>/// 获得全部年级信息/// <returns>年级数据集</returns>public DataSet GetAllGrades(){DBHelper dbHelper = new DBHelper();returndbHelper.GetDataSet(dboOwner+".usp_SelectGradesAll",Comm andType.StoredProcedure,"grade");}/// <summary>/// 根据年级名称获得年级ID/// </summary>/// <param name="gradeName">年级名称</param>/// <returns>年级ID</returns>public int GetGradeIDByGradeName(string gradeName){int number = 0;DBHelper dbHelper = new DBHelper();SqlParameter sqlParams = new SqlParameter("@GradeName", SqlDbType.NVarChar, 50);sqlParams.Value = gradeName;SqlDataReader objReader =dbHelper.GetReader(dboOwner + ".usp_SelectGradeByGradeName", CommandType.StoredProcedure, sqlParams);if (objReader.Read())number = Convert.ToInt32(objReader["GradeID"]);objReader.Close();objReader.Dispose();return number;}/// 新增年级/// </summary>public void AddGrade(DataSet dsGrade){DBHelper dbHelper = new DBHelper();SqlParameter[] sqlParams= new SqlParameter[1];sqlParams[0] = new SqlParameter("@GradeName", SqlDbType.NVarChar, 50);//sqlParams[1] = new SqlParameter("@GradeID", SqlDbType.Int);sqlParams[0].Value = dsGrade.Tables["Grade"].Rows[0]["GradeName"];//sqlParams[1].Value = 0;dbHelper.ExecuteSql(dboOwner + ".usp_SelectGradeByGradeName",CommandType.StoredProcedure, sqlParams);}#endregion}。
ADO常用操作——实例
#include"StdAfx.h"#include"DBHelper.h"#include<comdef.h>//#import "c:\programfiles\commonfiles\system\ado\msado15.dll"no_namespace rename("EOF","adoEOF")#import"c:\program files\commonfiles\system\ado\msado15.dll"rename_namespace("AdoNS") rename ("EOF", "adoEOF")usingnamespace AdoNS;_ConnectionPtrm_pConnection;_RecordsetPtrm_pRecordset;CListCtrlm_List;DBHelper::DBHelper(void){AfxOleInit();}DBHelper::~DBHelper(void){}bool DBHelper:: DBConnect() /////数据库连接{::CoInitialize(NULL);try{m_pConnection.CreateInstance("ADODB.Connection");//_bstr_tstrConnect="Provider=SQLOLEDB;Sever=127.0.0.1;Database=test;uid=vrp;pwd= vrp3d123;";//SQL数据库_bstr_tstrConnect="Provider=Microsoft.ACE.OLEDB.12.0;DataSource=F:\\test.accdb;"; //access数据库m_pConnection->Open(strConnect,"","",adModeUnknown);if(m_pConnection->State==adStateOpen){AfxMessageBox(L"数据库连接成功");returntrue;}}catch(_com_errore){AfxMessageBox(e.ErrorMessage());returnfalse;}returnfalse;}bool DBHelper::DBCheck(constchar* name,constchar* psw,char type )///////登录检查{if(m_pConnection->State!=adStateOpen){AfxMessageBox(_T("数据库未连接!"));returnfalse;}CStringstrL("'");CStringstr1("Select * From T_user Where user_name= ");CStringstrName(name);CStringstr2("and user_psw=");CStringstrPsw(psw);CStringstr3("and user_type=");CStringstrType(type);CStringstrSQL=str1+strL+strName+strL+" "+str2+strL+strPsw+strL+" "+str3+strL+strType+strL;//CString strSQL("select * from T_user where user_name='admin' anduser_psw='admin' and user_type=1") ;m_pRecordset.CreateInstance(__uuidof(Recordset)); //创建记录集对象try{m_pRecordset->Open(_variant_t(strSQL.GetBuffer(strSQL.GetLength())), m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText );//取得表中记录}catch(_com_errore){AfxMessageBox(e.ErrorMessage());returnfalse;}if(!m_pRecordset->adoEOF){m_pRecordset->Close();//m_pRecordset->MoveFirst();AfxMessageBox(_T("登录成功!"));returntrue;}else{m_pRecordset->Close();AfxMessageBox(_T("登录失败!"));returnfalse;}returnfalse;}bool DBHelper::DBClose() //关闭数据库{if (m_pConnection->State==adStateOpen){m_pConnection->Close();m_pConnection= NULL;::CoUninitialize();AfxMessageBox(_T("数据库关闭!"));returntrue;}returnfalse;}bool DBHelper::addUser(constchar* name,constchar* psw,char type)////新用户注册{CStringstrL("'");CStringstr1("select * from T_user where user_name=");CStringstrName(name);CStringstrSQL=str1+strL+strName+strL;m_pRecordset.CreateInstance(__uuidof(Recordset)); //创建记录集对象try{m_pRecordset->Open(_variant_t(strSQL.GetBuffer(strSQL.GetLength())), m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText );//取得表中记录}catch(_com_errore){m_pRecordset->Close();AfxMessageBox(e.ErrorMessage());returnfalse;}//////////////////////////////////////////////////////////////////////// //////////////if(!m_pRecordset->adoEOF){m_pRecordset->Close();AfxMessageBox(_T("用户已存在,请重新填写!"));returnfalse;}else{_variant_tm_name(name);_variant_tm_psw(psw);_variant_tm_type(type);m_pRecordset->AddNew(); //添加新行m_pRecordset->PutCollect("user_name",_variant_t(m_name));m_pRecordset->PutCollect("user_psw",_variant_t(m_psw));m_pRecordset->PutCollect("user_type",_variant_t(m_type));m_pRecordset->Update();AfxMessageBox(_T("添加人员成功!"));m_pRecordset->Close();////关闭连接returntrue;}returnfalse;}bool DBHelper::DelUser(constchar* name)////新用户注册{CStringstrL("'");CStringstr1("select * from T_user where user_name=");CStringstrName(name);CStringstrSQL=str1+strL+strName+strL;m_pRecordset.CreateInstance(__uuidof(Recordset)); //创建记录集对象try{m_pRecordset->Open(_variant_t(strSQL.GetBuffer(strSQL.GetLength())), m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText );//取得表中记录}catch(_com_errore){m_pRecordset->Close();AfxMessageBox(e.ErrorMessage());returnfalse;}returnfalse;}。
DBHelper帮助类
{
DataTable dataTable = null;
try
//:@在这里处理异常
throw new Exception(ex.Message);
//:$
}
}
/// <summary>
/// 执行指定sql语句,并返回DataTable对象
/// </summary>
/// <param name="CommandText">sql语句</param>
/// <param name="Params">参数列表</param>
/// <returns></returns>
}
/// <summary>
/// 获取一个数据库连接对象
/// </summary>
/// <returns></returns>
public static SqlConnection GetSqlConnection()
}
finally
{
try
{
_sCon.Close();
}
catch (Exception ex2)
DBHelper.Parameter[] sps = new DBHelper.Parameter[] {
new DBHelper.Parameter("@PageIndex",pageIndex)
时序图
论坛1.1.1.1登录功能1.1.1.1.1任务描述用户要完成回复,发帖等功能,要先登录,在登录窗口填写完整的信息,点击登录按钮:图3-1.登录时序图frontdisplsy是前台页面,user是客户类的对象,而DBHelper是数据库类的一个对象,前台要求用户登录功能,首先检查用户是否存在,如果存在,返回true,登录成功1.1.1.1.2输入填好用户名,密码,验证码等信息1.1.1.1.3输出登录成功,进入页面1.1.1.2注册功能1.1.1.2.1任务描述填写完整用户的信息,可以注册一个新用户图3-2.用户注册时序图用户填写完整信息后,调用user类中的IsUserExist()判断一下用户是否存在,如果不存在,则调用UserAdd()函数增加增加用户,最后返回相应的信息。
1.1.1.2.2输入注册用户的详细信息,点击注册按钮1.1.1.2.3输出注册成功或注册失败1.1.1.3给用户增加角色1.1.1.3.1任务描述只有管理员可以使用此功能,在后台页面,管理员可以为每一个用户添加不同的角色图3-3.增加用户角色时序图displsyBack是后台页面,,user是客户类的对象,UserRole是用户角色的一个对象,而DBHelper是数据库类的一个对象,添加角色时,调用UserRole的UserRoleAdd ()函数,如果成功,则返回正确信息。
1.1.1.3.2输入选中用户,选中要赋予的角色1.1.1.3.3输出该用户成功的得到该角色1.1.1.4给某角色增加权限1.1.1.4.1任务描述可以给不同的角色增加不同的权限图3-4.给某角色增加权限时序图1.1.1.4.2输入选定响应的角色,选定响应的角色,点击按钮1.1.1.4.3输出赋予了该角色该权限1.1.1.5增加版块1.1.1.5.1任务描述管理员可以给论坛增加相应的版块图3-5.增加版块时序图1.1.1.5.2输入输入要增加板块的名字以及相关的信息,点击按钮1.1.1.5.3输出增加了要增加的版块1.1.1.6更改客户信息1.1.1.6.1任务描述用户在登录之后可以更改自己的信息图3-6.用户更改信息时序图1.1.1.6.2输入输入要更改的信息,点击更改按钮1.1.1.6.3输出成功的更改了相应的信息1.1.1.7发帖1.1.1.7.1任务描述点击地图左上角漫游缩图3-7.发帖时序图1.1.1.7.2输入输入相应的帖子的标题和内容以及相关的信息,点击发帖按钮1.1.1.7.3输出帖子发布成功并成功的显示到帖子显示的页面1.1.1.8回复1.1.1.8.1任务描述登录后的用户可以针对某一个帖子进行回复图3-8.回复时序图1.1.1.8.2输入输入回复的内容及相关信息,点击回复按钮1.1.1.8.3输出成功的回复并显示到相关的页面上1.1.1.9删除帖子1.1.1.9.1任务描述管理员可以对某些不符合规定的帖子进行删除图错误!文档中没有指定样式的文字。
python dbhelper写法
python dbhelper写法Python中可以使用多种方式来编写数据库助手(dbhelper),下面是一个简单的示例,使用Python的sqlite3模块来创建一个数据库助手类:```pythonimport sqlite3class DBHelper:def __init__(self, db_name):= (db_name)= ()def create_table(self, table_name, columns):(f"CREATE TABLE IF NOT EXISTS {table_name} ({columns})")def insert_data(self, table_name, data):(f"INSERT INTO {table_name} VALUES ({data})")def query_data(self, table_name, condition=None):if condition:(f"SELECT FROM {table_name} WHERE {condition}")else:(f"SELECT FROM {table_name}")return ()def update_data(self, table_name, condition, data):(f"UPDATE {table_name} SET {data} WHERE {condition}")def delete_data(self, table_name, condition):(f"DELETE FROM {table_name} WHERE {condition}")def close(self):()()```这个类包含了一些基本的数据库操作,如创建表、插入数据、查询数据、更新数据和删除数据。
SQL 操作DBHelper
其实,微软的企业库中有一个非常不错的数据操作类了.但是,不少公司(起码我遇到的几个...),对一些"封装"了些什么的东西不太敢用,虽然我推荐过微软的企业库框架了...但是还是要"评估"...一评就是几个月...而且,一些公司有的根本就是裸开发,或者自己封装的数据库操作类非常别扭,很不好用.这里我给大家共享一个我参照企业库中的数据操作组件编码风格写的数据库操作类,对使用它的程序员来说,编码是很舒服滴(起码我觉得很好撒).以下是代码,很简单的,没有做任何多余的封装,只是改变了的编码步骤,方便了具体开发数据库操作代码的程序员.using System;using System.Data;using mon;using System.Configuration;public class DbHelper{private static string dbProviderName = ConfigurationManager.AppSettings["DbHelperProvider"];private static string dbConnectionString = ConfigurationManager.AppSettings["DbHelperConnectionS tring"];private DbConnection connection;public DbHelper(){this.connection = CreateConnection(DbHelper.dbConnectionString);}public DbHelper(string connectionString){this.connection = CreateConnection(connectionString);}public static DbConnection CreateConnection(){DbProviderFactory dbfactory = DbProviderFactories.GetFactory(DbHelper.dbProviderName);DbConnection dbconn = dbfactory.CreateConnection();dbconn.ConnectionString = DbHelper.dbConnectionString;return dbconn;}public static DbConnection CreateConnection(string connectionString){DbProviderFactory dbfactory = DbProviderFactories.GetFactory(DbHelper.dbProviderName);DbConnection dbconn = dbfactory.CreateConnection();dbconn.ConnectionString = connectionString;return dbconn;}public DbCommand GetStoredProcCommond(string storedProcedure){DbCommand dbCommand = connection.CreateCommand();mandText = storedProcedure;mandType = CommandType.StoredProcedure;return dbCommand;}public DbCommand GetSqlStringCommond(string sqlQuery) {DbCommand dbCommand = connection.CreateCommand();mandText = sqlQuery;mandType = CommandType.Text;return dbCommand;}增加参数执行执行事务}public class Trans : IDisposable{private DbConnection conn;private DbTransaction dbTrans;public DbConnection DbConnection{get { return this.conn; }}public DbTransaction DbTrans{get { return this.dbTrans; }}public Trans(){conn = DbHelper.CreateConnection();conn.Open();dbTrans = conn.BeginTransaction();}public Trans(string connectionString){conn = DbHelper.CreateConnection(connectionString);conn.Open();dbTrans = conn.BeginTransaction();}public void Commit(){mit();this.Colse();}public void RollBack(){dbTrans.Rollback();this.Colse();}public void Dispose(){this.Colse();}public void Colse(){if (conn.State == System.Data.ConnectionState.Open){conn.Close();}}}那么如何使用它呢?下面我给出一些基本的使用示例,基本能满足你大部分的数据库操作需要了.1)直接执行sql语句DbHelper db = new DbHelper();DbCommand cmd = db.GetSqlStringCommond("insert t1 (id)values('haha')"); db.ExecuteNonQuery(cmd);2)执行存储过程DbHelper db = new DbHelper();DbCommand cmd = db.GetStoredProcCommond("t1_insert");db.AddInParameter(cmd, "@id", DbType.String, "heihei");db.ExecuteNonQuery(cmd);3)返回DataSetDbHelper db = new DbHelper();DbCommand cmd = db.GetSqlStringCommond("select * from t1");DataSet ds = db.ExecuteDataSet(cmd);4)返回DataTableDbHelper db = new DbHelper();DbCommand cmd = db.GetSqlStringCommond("t1_findall");DataTable dt = db.ExecuteDataTable(cmd);5)输入参数/输出参数/返回值的使用(比较重要哦)DbHelper db = new DbHelper();DbCommand cmd = db.GetStoredProcCommond("t2_insert");db.AddInParameter(cmd, "@timeticks", DbType.Int64, DateTime.Now.Ticks);db.AddOutParameter(cmd, "@outString", DbType.String, 20);db.AddReturnParameter(cmd, "@returnValue", DbType.Int32);db.ExecuteNonQuery(cmd);string s = db.GetParameter(cmd, "@outString").Value as string;//out parameterint r = Convert.ToInt32(db.GetParameter(cmd, "@returnValue").Value);//return value 6)DataReader使用DbHelper db = new DbHelper();DbCommand cmd = db.GetStoredProcCommond("t2_insert");db.AddInParameter(cmd, "@timeticks", DbType.Int64, DateTime.Now.Ticks);db.AddOutParameter(cmd, "@outString", DbType.String, 20);db.AddReturnParameter(cmd, "@returnValue", DbType.Int32);using (DbDataReader reader = db.ExecuteReader(cmd)){dt.Load(reader);}string s = db.GetParameter(cmd, "@outString").Value as string;//out parameterint r = Convert.ToInt32(db.GetParameter(cmd, "@returnValue").Value);//return value7)事务的使用.(项目中需要将基本的数据库操作组合成一个完整的业务流时,代码级的事务是必不可少的哦)pubic void DoBusiness(){using (Trans t = new Trans()){try{D1(t);throw new Exception();//如果有异常,会回滚滴D2(t);mit();}catch{t.RollBack();}}}public void D1(Trans t){DbHelper db = new DbHelper();DbCommand cmd = db.GetStoredProcCommond("t2_insert");db.AddInParameter(cmd, "@timeticks", DbType.Int64, DateTime.Now.Ticks);db.AddOutParameter(cmd, "@outString", DbType.String, 20);db.AddReturnParameter(cmd, "@returnValue", DbType.Int32);if (t == null) db.ExecuteNonQuery(cmd);else db.ExecuteNonQuery(cmd,t);string s = db.GetParameter(cmd, "@outString").Value as string;//out parameterint r = Convert.ToInt32(db.GetParameter(cmd, "@returnValue").Value);//return value }public void D2(Trans t){DbHelper db = new DbHelper();DbCommand cmd = db.GetSqlStringCommond("insert t1 (id)values('..')");if (t == null) db.ExecuteNonQuery(cmd);else db.ExecuteNonQuery(cmd, t);}以上我们好像没有指定数据库连接字符串,大家如果看下DbHelper的代码,就知道要使用它必须在config中配置两个参数,如下:<appSettings><add key="DbHelperProvider" value="System.Data.SqlClient"/><add key="DbHelperConnectionString" value="Data Source=(local);Initial Catalog=DbHelperTest;Pe rsist Security Info=True;User ID=sa;Password=sa"/></appSettings>其实,DbHelper需要的仅仅是两个字符串,你可以自己修改,作成加密什么的...好了,就这样,DbHelper的代码是非常简单和透明的,只是在上做了一点小包装,改变了一下使用它的程序员的编码方式,去除掉一些比较"物理级"的编程概念,如connection的open和close之类的,使程序员更专注于业务逻辑代码的编写,少死掉点脑细胞,另外,统一了数据操作层的数据操作代码的风格和格式,维护起来很方便的撒~~~另:以上代码大家可以随意使用, 不需要给我版权费的啦,嘿嘿.如果大家发现有什么BUG,或者有更好的数据操作类的实现方式,请联系我哦.。
C#DBHelper数据库连接帮助类
C#DBHelper数据库连接帮助类DBHelper 帮助类1.作⽤:将C#应⽤程序与SQL SERVER数据库交互的公共⽅法(增删改查)提取出来,⽅便调⽤。
2.要求:C#⼊门级程序员必须熟练掌握编写3.组成:三个公⽤⽅法。
①ExecuteNonQuery 增删改②ExecuteScalar 查询返回单⾏单列③ExecuteQuery 查询返回多⾏多列4.代码明细:public class DBHelper{public static string strConn = "Server=01D023*********;uid=CG;pwd=abc.1234;Database=QQChat";///<summary>///增、删、改通⽤⽅法///</summary>///<param name="Sql">SQL 语句</param>///<param name="paras">可选参数</param>///<returns></returns>public static int ExecuteNonQuery(string Sql, params SqlParameter[] paras){int result = 0;//using ⾃动关闭资源,⾃带异常处理机制using (SqlConnection conn = new SqlConnection(strConn)){conn.Open();//打开连接SqlCommand command = new SqlCommand(Sql, conn);//执⾏命令command.Parameters.AddRange(paras);//加⼊参数result = command.ExecuteNonQuery(); //执⾏}return result;}///<summary>///查询单⾏当列///</summary>///<param name="Sql">SQL 语句</param>///<param name="paras">可选参数</param>///<returns></returns>public static Object ExecuteScalar(string Sql, params SqlParameter[] paras){Object result;//using ⾃动关闭资源,⾃带异常处理机制using (SqlConnection conn = new SqlConnection(strConn)){conn.Open();//打开连接SqlCommand command = new SqlCommand(Sql, conn);//执⾏命令command.Parameters.AddRange(paras);//加⼊参数result = command.ExecuteScalar(); //执⾏}return result;}///<summary>///查询返回多⾏多列;泛型升级未知对象类型;泛型类,泛型⽅法///</summary>///<param name="Sql">SQL 语句</param>///<param name="paras">可选参数</param>///<returns></returns>public static List<T> ExecuteQuery<T>(string Sql, params SqlParameter[] paras){List<T> list = new List<T>();//创建泛型集合对象using (SqlConnection conn = new SqlConnection(strConn)){conn.Open();//打开连接SqlCommand command = new SqlCommand(Sql, conn);//执⾏命令command.Parameters.AddRange(paras);//加⼊参数using (SqlDataReader reader = command.ExecuteReader())//执⾏游标{Type type = typeof(T);//检测类型//next 往下执⾏while (reader.Read()){//创建对象T t=(T)Activator.CreateInstance(type);foreach(PropertyInfo pi in type.GetProperties()) //反射 PropertyInfo类获取基类的属性{pi.SetValue(t, reader[] is DBNull ? null:reader[]); //ORM 将游标的值赋给对象 }list.Add(t);}}}return list;}}}。
contentprovide例子
"Content Provider"通常指的是在应用程序中提供和管理数据的组件。
在Android开发中,Content Providers是一种标准机制,允许不同的应用程序共享数据。
以下是一个简单的Content Provider 的例子:```javapublic class SimpleProvider extends ContentProvider {private static final String TAG = "SimpleProvider";private static final String DATABASE_NAME = "database.db";private static final int DATABASE_VERSION = 1;private static final String TABLE_NAME = "table";private static final String ID_COLUMN = "_id";private static final String VALUE_COLUMN = "value";private DBHelper dbHelper;@Overridepublic boolean onCreate() {dbHelper = new DBHelper(getContext());}@Overridepublic Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {SQLiteDatabase db = dbHelper.getReadableDatabase(); String finalSelection = selection == null ? null : selection + " AND " + ID_COLUMN + " > ?";return db.query(TABLE_NAME, projection, finalSelection, selectionArgs, null, null, sortOrder);}@Overridepublic Uri insert(Uri uri, ContentValues values) {SQLiteDatabase db = dbHelper.getWritableDatabase(); long id = db.insert(TABLE_NAME, null, values);Uri newUri = ContentUris.withAppendedId(uri, id);getContext().getContentResolver().notifyChange(newUri, null);}@Overridepublic int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {SQLiteDatabase db = dbHelper.getWritableDatabase(); int count = db.update(TABLE_NAME, values, selection, selectionArgs);getContext().getContentResolver().notifyChange(uri, null);return count;}@Overridepublic int delete(Uri uri, String selection, String[] selectionArgs) {SQLiteDatabase db = dbHelper.getWritableDatabase(); int count = db.delete(TABLE_NAME, selection, selectionArgs);getContext().getContentResolver().notifyChange(uri, null);}@Overridepublic String getType(Uri uri) {return null; // 这个方法在实际开发中可能不会被调用,但在实现时应该返回合适的MIME类型。
C#操作sqlserver的DbHelper类(带分页)
C#操作sqlserver的DbHelper类(带分页)1、配置⽂件设置:<appSettings><add key="testDB" value="server=192.168.1.10\sw;database=testDB;uid=sa;pwd=Aa123456" /></appSettings>2、操作数据帮助类:using System;using System.Collections.Generic;using System.Configuration;using System.Data;using mon;using System.Data.SqlClient;using System.Linq;using System.Text;using System.Threading.Tasks;namespace SwbAPI{public class DbHelper{//连接字符串static string strConn = ConfigurationManager.AppSettings["JiTuanShangWuDB"].ToString();//static string strConn = "server=192.168.1.238\sw;database=BusinessSystemDB;uid=sa;pwd=Aa123456";#region执⾏查询,返回DataTable对象-----------------------public static DataTable GetTable(string strSQL){return GetTable(strSQL, null);}public static DataTable GetTable(string strSQL, SqlParameter[] pas){return GetTable(strSQL, pas, CommandType.Text);}///<summary>///执⾏查询,返回DataTable对象///</summary>///<param name="strSQL">sql语句</param>///<param name="pas">参数数组</param>///<param name="cmdtype">Command类型</param>///<returns>DataTable对象</returns>public static DataTable GetTable(string strSQL, SqlParameter[] pas, CommandType cmdtype){DataTable dt = new DataTable(); ;using (SqlConnection conn = new SqlConnection(strConn)){SqlDataAdapter da = new SqlDataAdapter(strSQL, conn);mandType = cmdtype;if (pas != null){da.SelectCommand.Parameters.AddRange(pas);}da.Fill(dt);}return dt;}#region根据枚举连接数据库public static DataTable GetTable(string strSQL, DataBaseName dataBaseName){return GetTable(strSQL, null, dataBaseName);}public static DataTable GetTable(string strSQL, SqlParameter[] pas, DataBaseName dataBaseName){return GetTable(strSQL, pas, CommandType.Text, dataBaseName);}///<summary>///执⾏查询,返回DataTable对象///</summary>///<param name="strSQL">sql语句</param>///<param name="pas">参数数组</param>///<param name="cmdtype">Command类型</param>///<returns>DataTable对象</returns>public static DataTable GetTable(string strSQL, SqlParameter[] pas, CommandType cmdtype, DataBaseName dataBaseName){DataTable dt = new DataTable(); ;using (SqlConnection conn = new SqlConnection(GetEnumDes(dataBaseName.ToString()))){SqlDataAdapter da = new SqlDataAdapter(strSQL, conn);mandType = cmdtype;if (pas != null)}#endregion#endregion#region执⾏查询,返回DataSet对象-------------------------public static DataSet GetDataSet(string strSQL){return GetDataSet(strSQL, null);}public static DataSet GetDataSet(string strSQL, SqlParameter[] pas){return GetDataSet(strSQL, pas, CommandType.Text);}///<summary>///执⾏查询,返回DataSet对象///</summary>///<param name="strSQL">sql语句</param>///<param name="pas">参数数组</param>///<param name="cmdtype">Command类型</param>///<returns>DataSet对象</returns>public static DataSet GetDataSet(string strSQL, SqlParameter[] pas, CommandType cmdtype){DataSet dt = new DataSet(); ;using (SqlConnection conn = new SqlConnection(strConn)){SqlDataAdapter da = new SqlDataAdapter(strSQL, conn);mandType = cmdtype;if (pas != null){da.SelectCommand.Parameters.AddRange(pas);}da.Fill(dt);if (dt != null && dt.Tables.Count == 2){dt.Tables[0].TableName = "DataList";dt.Tables[1].TableName = "DataTotal";}else if (dt != null && dt.Tables.Count == 1){dt.Tables[0].TableName = "DataList";}}return dt;}#region根据枚举连接数据库public static DataSet GetDataSet(string strSQL, DataBaseName dataBaseName){return GetDataSet(strSQL, null, dataBaseName);}public static DataSet GetDataSet(string strSQL, SqlParameter[] pas, DataBaseName dataBaseName){return GetDataSet(strSQL, pas, CommandType.Text, dataBaseName);}///<summary>///执⾏查询,返回DataSet对象///</summary>///<param name="strSQL">sql语句</param>///<param name="pas">参数数组</param>///<param name="cmdtype">Command类型</param>///<returns>DataSet对象</returns>public static DataSet GetDataSet(string strSQL, SqlParameter[] pas, CommandType cmdtype, DataBaseName dataBaseName) {DataSet dt = new DataSet(); ;using (SqlConnection conn = new SqlConnection(GetEnumDes(dataBaseName.ToString()))){SqlDataAdapter da = new SqlDataAdapter(strSQL, conn);mandType = cmdtype;if (pas != null){da.SelectCommand.Parameters.AddRange(pas);}da.Fill(dt);if (dt != null && dt.Tables.Count == 2){dt.Tables[0].TableName = "DataList";dt.Tables[1].TableName = "DataTotal";}else if (dt != null && dt.Tables.Count == 1){#endregion#region执⾏⾮查询存储过程和SQL语句-----------------------------public static int ExcuteProc(string ProcName){return ExcuteSQL(ProcName, null, CommandType.StoredProcedure);}public static int ExcuteProc(string ProcName, SqlParameter[] pars){return ExcuteSQL(ProcName, pars, CommandType.StoredProcedure);}public static int ExcuteSQL(string strSQL){return ExcuteSQL(strSQL, null);}public static int ExcuteSQL(string strSQL, SqlParameter[] paras){return ExcuteSQL(strSQL, paras, CommandType.Text);}///执⾏⾮查询存储过程和SQL语句///增、删、改///</summary>///<param name="strSQL">要执⾏的SQL语句</param>///<param name="paras">参数列表,没有参数填⼊null</param>///<param name="cmdType">Command类型</param>///<returns>返回影响⾏数</returns>public static int ExcuteSQL(string strSQL, SqlParameter[] paras, CommandType cmdType){int i = 0;using (SqlConnection conn = new SqlConnection(strConn)){SqlCommand cmd = new SqlCommand(strSQL, conn);mandType = cmdType;if (paras != null){cmd.Parameters.AddRange(paras);}conn.Open();i = cmd.ExecuteNonQuery();conn.Close();}return i;}#region执⾏sql返回⾃增ID///<summary>///执⾏SQL语句,返回⾃增ID///</summary>///<param name="SQLString">SQL语句</param>///<returns>影响的记录数</returns>public static int ExecuteSQLReturnID(string SQLString){using (SqlConnection connection = new SqlConnection(strConn)){using (SqlCommand cmd = new SqlCommand(SQLString, connection)){try{connection.Open();mandText += ";\nSELECT SCOPE_IDENTITY() AS NewID;";int id = Convert.ToInt32(cmd.ExecuteScalar());return id;}catch (System.Data.SqlClient.SqlException e){connection.Close();throw e;}}}}#endregion#region执⾏sql返回⾃增ID///<summary>///执⾏SQL语句,返回⾃增ID///</summary>///<param name="SQLString">SQL语句</param>///<returns>影响的记录数</returns>public static int ExecuteSQLReturnID(string SQLString, SqlParameter[] paras, DataBaseName dataBaseName) {try{if (paras != null){cmd.Parameters.AddRange(paras);}connection.Open();mandText += ";\nSELECT SCOPE_IDENTITY() AS NewID;";int id = Convert.ToInt32(cmd.ExecuteScalar());return id;}catch (System.Data.SqlClient.SqlException e){connection.Close();throw e;}}}}#endregion#region根据枚举连接数据库public static int ExcuteProc(string ProcName, DataBaseName dataBaseName){return ExcuteSQL(ProcName, null, CommandType.StoredProcedure, dataBaseName);}public static int ExcuteProc(string ProcName, SqlParameter[] pars, DataBaseName dataBaseName){return ExcuteSQL(ProcName, pars, CommandType.StoredProcedure, dataBaseName);}public static int ExcuteSQL(string strSQL, DataBaseName dataBaseName){return ExcuteSQL(strSQL, null, dataBaseName);}public static int ExcuteSQL(string strSQL, SqlParameter[] paras, DataBaseName dataBaseName){return ExcuteSQL(strSQL, paras, CommandType.Text, dataBaseName);}///执⾏⾮查询存储过程和SQL语句///增、删、改///</summary>///<param name="strSQL">要执⾏的SQL语句</param>///<param name="paras">参数列表,没有参数填⼊null</param>///<param name="cmdType">Command类型</param>///<returns>返回影响⾏数</returns>public static int ExcuteSQL(string strSQL, SqlParameter[] paras, CommandType cmdType, DataBaseName dataBaseName) {int i = 0;using (SqlConnection conn = new SqlConnection(GetEnumDes(dataBaseName.ToString()))){SqlCommand cmd = new SqlCommand(strSQL, conn);mandType = cmdType;if (paras != null){cmd.Parameters.AddRange(paras);}conn.Open();i = cmd.ExecuteNonQuery();conn.Close();}return i;}#region执⾏sql返回⾃增ID///<summary>///执⾏SQL语句,返回⾃增ID///</summary>///<param name="SQLString">SQL语句</param>///<returns>影响的记录数</returns>public static int ExecuteSQLReturnID(string SQLString, DataBaseName dataBaseName){using (SqlConnection connection = new SqlConnection(GetEnumDes(dataBaseName.ToString()))){using (SqlCommand cmd = new SqlCommand(SQLString, connection)){try{connection.Open();mandText += ";\nSELECT SCOPE_IDENTITY() AS NewID;";int id = Convert.ToInt32(cmd.ExecuteScalar());return id;}catch (System.Data.SqlClient.SqlException e){connection.Close();throw e;#endregion#endregion#endregion#region执⾏查询返回第⼀⾏,第⼀列---------------------------------///<summary>///执⾏SQL语句,返回第⼀⾏,第⼀列///</summary>///<param name="strSQL">要执⾏的SQL语句</param>///<param name="paras">参数列表,没有参数填⼊null</param>///<param name="paras">执⾏类型,</param>///<returns>返回结果</returns>public static object ExcuteScalarSQLObj(string strSQL, SqlParameter[] paras){object i ;using (SqlConnection conn = new SqlConnection(strConn)){SqlCommand cmd = new SqlCommand(strSQL, conn);mandType = CommandType.Text;if (paras != null){cmd.Parameters.AddRange(paras);}conn.Open();if (DBNull.Value == cmd.ExecuteScalar()){i = null;}else{i =cmd.ExecuteScalar();}conn.Close();}return i;}public static int ExcuteScalarSQL(string strSQL){return ExcuteScalarSQL(strSQL, null);}public static int ExcuteScalarSQL(string strSQL, SqlParameter[] paras){return ExcuteScalarSQL(strSQL, paras, CommandType.Text);}public static int ExcuteScalarProc(string strSQL, SqlParameter[] paras){return ExcuteScalarSQL(strSQL, paras, CommandType.StoredProcedure);}///<summary>///执⾏SQL语句,返回第⼀⾏,第⼀列///</summary>///<param name="strSQL">要执⾏的SQL语句</param>///<param name="paras">参数列表,没有参数填⼊null</param>///<returns>返回影响⾏数</returns>public static int ExcuteScalarSQL(string strSQL, SqlParameter[] paras, CommandType cmdType) {int i = 0;using (SqlConnection conn = new SqlConnection(strConn)){SqlCommand cmd = new SqlCommand(strSQL, conn);mandType = cmdType;if (paras != null){cmd.Parameters.AddRange(paras);}conn.Open();if (DBNull.Value == cmd.ExecuteScalar()){i = 0;}else{i = Convert.ToInt32(cmd.ExecuteScalar());}conn.Close();}return i;}#region根据枚举连接数据库public static int ExcuteScalarSQL(string strSQL, DataBaseName dataBaseName){return ExcuteScalarSQL(strSQL, paras, CommandType.Text, dataBaseName);}public static int ExcuteScalarProc(string strSQL, SqlParameter[] paras, DataBaseName dataBaseName){return ExcuteScalarSQL(strSQL, paras, CommandType.StoredProcedure, dataBaseName);}///<summary>///执⾏SQL语句,返回第⼀⾏,第⼀列///</summary>///<param name="strSQL">要执⾏的SQL语句</param>///<param name="paras">参数列表,没有参数填⼊null</param>///<returns>返回影响⾏数</returns>public static int ExcuteScalarSQL(string strSQL, SqlParameter[] paras, CommandType cmdType, DataBaseName dataBaseName) {int i = 0;using (SqlConnection conn = new SqlConnection(GetEnumDes(dataBaseName.ToString()))){SqlCommand cmd = new SqlCommand(strSQL, conn);mandType = cmdType;if (paras != null){cmd.Parameters.AddRange(paras);}conn.Open();if (DBNull.Value == cmd.ExecuteScalar()){i = 0;}else{i = Convert.ToInt32(cmd.ExecuteScalar());}conn.Close();}return i;}#endregion#endregion#region查询获取单个值------------------------------------///<summary>///调⽤不带参数的存储过程获取单个值///</summary>///<param name="ProcName"></param>///<returns></returns>public static object GetObjectByProc(string ProcName){return GetObjectByProc(ProcName, null);}///<summary>///调⽤带参数的存储过程获取单个值///</summary>///<param name="ProcName"></param>///<param name="paras"></param>///<returns></returns>public static object GetObjectByProc(string ProcName, SqlParameter[] paras){return GetObject(ProcName, paras, CommandType.StoredProcedure);}///<summary>///根据sql语句获取单个值///</summary>///<param name="strSQL"></param>///<returns></returns>public static object GetObject(string strSQL){return GetObject(strSQL, null);}///<summary>///根据sql语句和参数数组获取单个值///</summary>///<param name="strSQL"></param>///<param name="paras"></param>///<returns></returns>public static object GetObject(string strSQL, SqlParameter[] paras){return GetObject(strSQL, paras, CommandType.Text);}///<summary>///执⾏SQL语句,返回⾸⾏⾸列///</summary>///<param name="strSQL">要执⾏的SQL语句</param>///<param name="paras">参数列表,没有参数填⼊null</param>///<returns>返回的⾸⾏⾸列</returns>{SqlCommand cmd = new SqlCommand(strSQL, conn);mandType = cmdtype;if (paras != null){cmd.Parameters.AddRange(paras);}conn.Open();o = cmd.ExecuteScalar();conn.Close();}return o;}#region根据枚举连接数据库///<summary>///调⽤不带参数的存储过程获取单个值///</summary>///<param name="ProcName"></param>///<returns></returns>public static object GetObjectByProc(string ProcName, DataBaseName dataBaseName){return GetObjectByProc(ProcName, null, dataBaseName);}///<summary>///调⽤带参数的存储过程获取单个值///</summary>///<param name="ProcName"></param>///<param name="paras"></param>///<returns></returns>public static object GetObjectByProc(string ProcName, SqlParameter[] paras, DataBaseName dataBaseName){return GetObject(ProcName, paras, CommandType.StoredProcedure, dataBaseName);}///<summary>///根据sql语句获取单个值///</summary>///<param name="strSQL"></param>///<returns></returns>public static object GetObject(string strSQL, DataBaseName dataBaseName){return GetObject(strSQL, null, dataBaseName);}///<summary>///根据sql语句和参数数组获取单个值///</summary>///<param name="strSQL"></param>///<param name="paras"></param>///<returns></returns>public static object GetObject(string strSQL, SqlParameter[] paras, DataBaseName dataBaseName){return GetObject(strSQL, paras, CommandType.Text, dataBaseName);}///<summary>///执⾏SQL语句,返回⾸⾏⾸列///</summary>///<param name="strSQL">要执⾏的SQL语句</param>///<param name="paras">参数列表,没有参数填⼊null</param>///<returns>返回的⾸⾏⾸列</returns>public static object GetObject(string strSQL, SqlParameter[] paras, CommandType cmdtype, DataBaseName dataBaseName) {object o = null;using (SqlConnection conn = new SqlConnection(GetEnumDes(dataBaseName.ToString()))){SqlCommand cmd = new SqlCommand(strSQL, conn);mandType = cmdtype;if (paras != null){cmd.Parameters.AddRange(paras);}conn.Open();o = cmd.ExecuteScalar();conn.Close();}return o;}#endregion#endregion#region查询获取DataReader------------------------------------///<returns>DataReader对象</returns>public static SqlDataReader GetReaderByProc(string procName){return GetReaderByProc(procName, null);}///<summary>///调⽤带有参数的存储过程,返回DataReader对象///</summary>///<param name="procName">存储过程名</param>///<param name="paras">参数数组</param>///<returns>DataReader对象</returns>public static SqlDataReader GetReaderByProc(string procName, SqlParameter[] paras){return GetReader(procName, paras, CommandType.StoredProcedure);}///<summary>///根据sql语句返回DataReader对象///</summary>///<param name="strSQL">sql语句</param>///<returns>DataReader对象</returns>public static SqlDataReader GetReader(string strSQL){return GetReader(strSQL, null);}///<summary>///根据sql语句和参数返回DataReader对象///</summary>///<param name="strSQL">sql语句</param>///<param name="paras">参数数组</param>///<returns>DataReader对象</returns>public static SqlDataReader GetReader(string strSQL, SqlParameter[] paras){return GetReader(strSQL, paras, CommandType.Text);}///<summary>///查询SQL语句获取DataReader///</summary>///<param name="strSQL">查询的SQL语句</param>///<param name="paras">参数列表,没有参数填⼊null</param>///<returns>查询到的DataReader(关闭该对象的时候,⾃动关闭连接)</returns>public static SqlDataReader GetReader(string strSQL, SqlParameter[] paras, CommandType cmdtype){SqlDataReader sqldr = null;SqlConnection conn = new SqlConnection(strConn);SqlCommand cmd = new SqlCommand(strSQL, conn);mandType = cmdtype;if (paras != null){cmd.Parameters.AddRange(paras);}conn.Open();//CommandBehavior.CloseConnection的作⽤是如果关联的DataReader对象关闭,则连接⾃动关闭sqldr = cmd.ExecuteReader(CommandBehavior.CloseConnection);return sqldr;}#region根据枚举连接数据库///<summary>///调⽤不带参数的存储过程,返回DataReader对象///</summary>///<param name="procName">存储过程名称</param>///<returns>DataReader对象</returns>public static SqlDataReader GetReaderByProc(string procName, DataBaseName dataBaseName){return GetReaderByProc(procName, null, dataBaseName);}///<summary>///调⽤带有参数的存储过程,返回DataReader对象///</summary>///<param name="procName">存储过程名</param>///<param name="paras">参数数组</param>///<returns>DataReader对象</returns>public static SqlDataReader GetReaderByProc(string procName, SqlParameter[] paras, DataBaseName dataBaseName) {return GetReader(procName, paras, CommandType.StoredProcedure, dataBaseName);}///<summary>///根据sql语句返回DataReader对象///</summary>///<param name="strSQL">sql语句</param>///<returns>DataReader对象</returns>public static SqlDataReader GetReader(string strSQL, DataBaseName dataBaseName){return GetReader(strSQL, null, dataBaseName);}///<summary>///根据sql语句和参数返回DataReader对象public static SqlDataReader GetReader(string strSQL, SqlParameter[] paras, DataBaseName dataBaseName){return GetReader(strSQL, paras, CommandType.Text, dataBaseName);}///<summary>///查询SQL语句获取DataReader///</summary>///<param name="strSQL">查询的SQL语句</param>///<param name="paras">参数列表,没有参数填⼊null</param>///<returns>查询到的DataReader(关闭该对象的时候,⾃动关闭连接)</returns>public static SqlDataReader GetReader(string strSQL, SqlParameter[] paras, CommandType cmdtype, DataBaseName dataBaseName) {SqlDataReader sqldr = null;SqlConnection conn = new SqlConnection(GetEnumDes(dataBaseName.ToString()));SqlCommand cmd = new SqlCommand(strSQL, conn);mandType = cmdtype;if (paras != null){cmd.Parameters.AddRange(paras);}conn.Open();//CommandBehavior.CloseConnection的作⽤是如果关联的DataReader对象关闭,则连接⾃动关闭sqldr = cmd.ExecuteReader(CommandBehavior.CloseConnection);return sqldr;}#endregion#endregion#region批量插⼊数据---------------------------------------------///<summary>///往数据库中批量插⼊数据///</summary>///<param name="sourceDt">数据源表</param>///<param name="targetTable">服务器上⽬标表</param>public static void BulkToDB(DataTable sourceDt, string targetTable){SqlConnection conn = new SqlConnection(strConn);SqlBulkCopy bulkCopy = new SqlBulkCopy(conn); //⽤其它源的数据有效批量加载sql server表中bulkCopy.DestinationTableName = targetTable; //服务器上⽬标表的名称bulkCopy.BatchSize = sourceDt.Rows.Count; //每⼀批次中的⾏数try{conn.Open();if (sourceDt != null && sourceDt.Rows.Count != 0)bulkCopy.WriteToServer(sourceDt); //将提供的数据源中的所有⾏复制到⽬标表中}catch (Exception ex){throw ex;}finally{conn.Close();if (bulkCopy != null)bulkCopy.Close();}}#region根据枚举连接数据库///<summary>///往数据库中批量插⼊数据///</summary>///<param name="sourceDt">数据源表</param>///<param name="targetTable">服务器上⽬标表</param>public static void BulkToDB(DataTable sourceDt, string targetTable, DataBaseName dataBaseName){SqlConnection conn = new SqlConnection(GetEnumDes(dataBaseName.ToString()));SqlBulkCopy bulkCopy = new SqlBulkCopy(conn); //⽤其它源的数据有效批量加载sql server表中bulkCopy.DestinationTableName = targetTable; //服务器上⽬标表的名称bulkCopy.BatchSize = sourceDt.Rows.Count; //每⼀批次中的⾏数try{conn.Open();if (sourceDt != null && sourceDt.Rows.Count != 0)bulkCopy.WriteToServer(sourceDt); //将提供的数据源中的所有⾏复制到⽬标表中}catch (Exception ex){throw ex;}finally}}#endregion#endregion#region根据枚举返回数据库连接字符串public static string GetEnumDes(string dataBaseName){string conn = string.Empty;if (dataBaseName == "集团商务"){conn = ConfigurationManager.AppSettings["JiTuanShangWuDB"].ToString();}else if (dataBaseName == "数据平台"){conn = ConfigurationManager.AppSettings["ShuJuPingTai"].ToString();}else if (dataBaseName == "⽜经纪") {conn = ConfigurationManager.AppSettings["NiuJingJi"].ToString();}else if (dataBaseName == "会员"){conn = ConfigurationManager.AppSettings["MobilePlatformDB"].ToString();}else if (dataBaseName == "电商官⽹"){conn = ConfigurationManager.AppSettings["ElectricityDB"].ToString();}else if (dataBaseName == "数据平台DI"){conn = ConfigurationManager.AppSettings["ShuJuPingTaiDI"].ToString();}else{conn = ConfigurationManager.AppSettings["JiTuanShangWuDB"].ToString();}return conn;}#endregion#region MyRegion 执⾏事务逻辑///<summary>///有锁的事务⽅法插⼊数据///</summary>///<param name="tran"></param>///<param name="sql"></param>///<param name="pms"></param>///<returns></returns>public static int ExecuteNonQuery(IDbTransaction tran, string sql, params SqlParameter[] pms){using (SqlCommand cmd = new SqlCommand(sql, (SqlConnection)tran.Connection, (SqlTransaction)tran)) {if (pms != null){cmd.Parameters.AddRange(pms);}return cmd.ExecuteNonQuery();}}#endregion}#region数据库--枚举(DataBaseName)///<summary>///数据库类型枚举:集团商务、⽜经纪///</summary>public enum DataBaseName{集团商务,数据平台,⽜经纪,会员,电商官⽹,数据平台DI}#endregion#region MyRegion 事务sqlpublic class TransactionDal{CreateConnection = Connection;}public void BeginTransaction(){dbconnection = new SqlConnection(CreateConnection);dbconnection.Open();transaction = dbconnection.BeginTransaction();}public void CommitTransaction(){if (null != transaction){mit();}}public void RollbackTransaction(){if (null != transaction){transaction.Rollback();}}public void DisposeTransaction(){if (dbconnection.State == ConnectionState.Open){dbconnection.Close();}if (null != transaction){transaction.Dispose();}}}#endregion}3、调⽤存储过程实例:SqlParameter[] param = new SqlParameter[]{new SqlParameter("@type", 0),new SqlParameter("@BaseID", 0),new SqlParameter("@FenGongSiID",model.tb_diqu)}BaseID = DbHelper.ExcuteProc("Proc_Base_Add", param);View Code4、修改实例:public ActionResult HuiFuKeHu(int baseid){var sql = string.Format(@"UPDATE BaseTable SET ZhuangTai=0 WHERE BaseID={0}", baseid); var re = DbHelper.ExcuteSQL(sql);var restr = "";if (re > 0)restr = "ok";elserestr = "no";return Json(new { y = restr });}View Code5、分页帮助类:using System;using System.Collections.Generic;using System.Data;using System.Data.SqlClient;using System.Linq;using System.Text;using System.Web;namespace SwbAPI{public class PagingHelper///<summary>///获取分页SQL语句,默认row_number为关健字,所有表不允许使⽤该字段名///</summary>///<param name="_pageSize">每页记录数</param>///<param name="_pageIndex">当前页数</param>///<param name="_columnSql">查询列</param>///<param name="_fromSql">from后sql</param>///<param name="_orderField">排序字段,多个则⽤“,”隔开</param>///<returns>分页SQL语句</returns>public static DataSet GetPagingData(int _pageSize, int _pageIndex, string _columnSql, string _fromSql, string _orderField){DataSet ds = null;//检查当前页数if (_pageIndex < 1){_pageIndex = 1;}//分页sql,拼接SQL字符串,加上ROW_NUMBER函数进⾏分页StringBuilder newSafeSql = new StringBuilder();newSafeSql.AppendFormat("SELECT ROW_NUMBER() OVER(ORDER BY {0}) as ROWID,", _orderField);newSafeSql.AppendFormat("{0} from {1}", _columnSql, _fromSql);//拼接成最终的SQL语句StringBuilder sbSql = new StringBuilder();sbSql.Append("SELECT * FROM (");sbSql.Append(newSafeSql.ToString());sbSql.Append(") AS T");sbSql.AppendFormat(" WHERE ROWID between {0} and {1}", ((_pageIndex - 1) * _pageSize) + 1, _pageIndex * _pageSize);// 总条数sqlsbSql.AppendFormat(";select count(1) Total from " + _fromSql);sbSql.ToString();ds = DbHelper.GetDataSet(sbSql.ToString());return ds;}#region根据枚举返回数据库连接字符串///<summary>///获取分页SQL语句,默认row_number为关健字,所有表不允许使⽤该字段名///</summary>///<param name="_pageSize">每页记录数</param>///<param name="_pageIndex">当前页数</param>///<param name="_columnSql">查询列</param>///<param name="_fromSql">from后sql</param>///<param name="_orderField">排序字段,多个则⽤“,”隔开</param>///<returns>分页SQL语句</returns>public static DataSet GetPagingData(int _pageSize, int _pageIndex, string _columnSql, string _fromSql, string _orderField, DataBaseName dataBaseName){DataSet ds = null;//检查当前页数if (_pageIndex < 1){_pageIndex = 1;}//分页sql,拼接SQL字符串,加上ROW_NUMBER函数进⾏分页StringBuilder newSafeSql = new StringBuilder();newSafeSql.AppendFormat("SELECT ROW_NUMBER() OVER(ORDER BY {0}) as ROWID,", _orderField);newSafeSql.AppendFormat("{0} from {1}", _columnSql, _fromSql);//拼接成最终的SQL语句StringBuilder sbSql = new StringBuilder();sbSql.Append("SELECT * FROM (");sbSql.Append(newSafeSql.ToString());sbSql.Append(") AS T");sbSql.AppendFormat(" WHERE ROWID between {0} and {1}", ((_pageIndex - 1) * _pageSize) + 1, _pageIndex * _pageSize);// 总条数sqlsbSql.AppendFormat(";select count(1) Total from " + _fromSql);sbSql.ToString();ds = DbHelper.GetDataSet(sbSql.ToString(),dataBaseName);return ds;}#endregion#region根据枚举返回数据库连接字符串///<summary>///获取分页SQL语句,默认row_number为关健字,所有表不允许使⽤该字段名///</summary>///<param name="_pageSize">每页记录数</param>///<param name="_pageIndex">当前页数</param>///<param name="_columnSql">查询列</param>///<param name="_fromSql">from后sql</param>///<param name="_orderField">排序字段,多个则⽤“,”隔开</param>///<returns>分页SQL语句</returns>public static DataSet GetPagingData(int _pageSize, int _pageIndex, string _columnSql, string _fromSql,SqlParameter[] param, string _orderField, DataBaseName dataBaseName) {DataSet ds = null;//检查当前页数。
sqlsugar firstasync方法
在Sqlsugar中,firstAsync方法用于执行异步查询并返回结果。
该方法允许你在异步环境中执行查询操作,而不会阻塞主线程。
下面是firstAsync方法的基本语法:java复制代码SqlSugar sqlSugar = new SqlSugar(dbHelper);sqlSugar.firstAsync(String sql, Object... args).subscribe(new Action1<Map<String, Object>>() {@Overridepublic void call(Map<String, Object> result) {// 处理查询结果}}, new Action1<Throwable>() {@Overridepublic void call(Throwable error) {// 处理查询错误}});在上述代码中,我们首先创建了一个SqlSugar对象,并传入了一个dbHelper实例。
然后,我们调用firstAsync方法,并传入要执行的SQL语句和参数(可选)。
接下来,我们使用subscribe方法来订阅查询结果,并通过Action1接口来处理查询结果和错误。
当查询成功时,Action1接口的call方法将被调用,并传入一个包含查询结果的Map对象。
你可以在该方法中访问和处理查询结果。
如果查询失败,Action1接口的call方法将被调用,并传入一个包含错误信息的Throwable对象。
你可以在该方法中处理查询错误。
需要注意的是,由于firstAsync方法是异步执行的,因此你需要在订阅结果时使用subscribe方法来启动异步操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
return ds.Tables[0];
}
public static DataTable GetDataSet(string safeSql, params SqlParameter[] values)
}
public static int GetScalar(string safeSql, params SqlParameter[] values)
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
connection.ConnectionString = connectionString;
connection.Open();
}
else
if (connection.State == ConnectionState.Closed)
{
connection.Open();
}
return connection;
}
}
public static int ExecteCommand(string safeSql)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = Connection;
mandText = safeSql;
return cmd.ExecuteNonQuery();
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
SqlDataReader reader = cmd.ExecuteReader();
return reader;
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
return Convert.ToInt32(cmd.ExecuteScalar());
//return int.Parse(cmd.ExecuteScalar().ToString());
}
public static SqlDataReader GetReader(string safeSql, params SqlParameter[] values)
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
cmd.Parameters.AddRange(values);
return Convert.ToInt32(cmd.ExecuteScalar());
}
public static SqlDataReader GetReader(string safeSql)
using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
namespace Game_MyQQ.DAL
cmd.Parameters.AddRange(values);
return cmd.ExecuteNonQuery();
}
public static int Updata(string sql)
{
SqlCommand cmd = new SqlCommand(sql, Connection);
int i = cmd.ExecuteNonQuery();
return i;
}
public static int GetScalar(string safeSql)
{
get
{
if (connection.ConnectionString == "String = ConfigurationManager.ConnectionStrings["myqq"].ConnectionString;
{
public class DBHelper
{
private static SqlConnection connection = new SqlConnection();
public static SqlConnection Connection
}
public static int ExecteCommand(string safeSql, params SqlParameter[] values)
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
cmd.Parameters.AddRange(values);
return cmd.ExecuteReader();
}
public static DataTable GetDataSet(string safeSql)
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
cmd.Parameters.AddRange(values);
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds.Tables[0];
}
}
}