C#连接、访问MySQL数据库
///
///SQLHelper 的摘要说明
///
public abstract class SQLHelper
{
//数据库连接字符串(注意:这里的“DBConnectionString”一定要与web.config文件中connectionStrings节点值一致)
public static readonly string connectionString=System.Configuration.ConfigurationManager.ConnectionStrings["DBConnectionString"].ToString();
// 用于缓存参数的HASH表
private static Hashtable parmCache=Hashtable.Synchronized(new Hashtable());
///
/// 给定连接的数据库用假设参数执行一个sql命令(不返回数据集)
///
/// 命令类型(存储过程, 文本, 等等)
/// 存储过程名称或者sql命令语句
/// 执行命令所用参数的集合
/// 执行命令所影响的行数
public static int ExecuteNonQuery(string cmdText, CommandType cmdType=CommandType.Text, params MySqlParameter[] commandParameters)
{
MySqlCommand cmd=new MySqlCommand();
using (MySqlConnection conn=new MySqlConnection(connectionString))
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
int val=cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
}
///
/// 用执行的数据库连接执行一个返回数据集的sql命令
///
///
/// 举例:
/// MySqlDataReader r=ExecuteReader(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));
///
/// 命令类型(存储过程, 文本, 等等)
/// 存储过程名称或者sql命令语句
/// 执行命令所用参数的集合
/// 包含结果的读取器
public static MySqlDataReader ExecuteReader(string cmdText, CommandType cmdType=CommandType.Text, params MySqlParameter[] commandParameters)
{
//创建一个MySqlCommand对象
MySqlCommand cmd=new MySqlCommand();
//创建一个MySqlConnection对象
MySqlConnection conn=new MySqlConnection(connectionString);
//在这里我们用一个try/catch结构执行sql文本命令/存储过程,因为如果这个方法产生一个异常我们要关闭连接,因为没有读取器存在,
//因此commandBehaviour.CloseConnection 就不会执行
try
{
//调用 PrepareCommand 方法,对 MySqlCommand 对象设置参数
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
//调用 MySqlCommand 的 ExecuteReader 方法
MySqlDataReader reader=cmd.ExecuteReader(CommandBehavior.CloseConnection);
//清除参数
cmd.Parameters.Clear();
return reader;
}
catch
{
//关闭连接,抛出异常
conn.Close();
throw;
}
}
///
/// 返回DataSet
///
/// 命令类型(存储过程, 文本, 等等)
/// 存储过程名称或者sql命令语句
/// 执行命令所用参数的集合
///
public static DataSet GetDataSet(string cmdText, CommandType cmdType=CommandType.Text, params MySqlParameter[] commandParameters)
{
//创建一个MySqlCommand对象
MySqlCommand cmd=new MySqlCommand();
//创建一个MySqlConnection对象
MySqlConnection conn=new MySqlConnection(connectionString);
//在这里我们用一个try/catch结构执行sql文本命令/存储过程,因为如果这个方法产生一个异常我们要关闭连接,因为没有读取器存在,
try
{
//调用 PrepareCommand 方法,对 MySqlCommand 对象设置参数
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
//调用 MySqlCommand 的 ExecuteReader 方法
MySqlDataAdapter adapter=new MySqlDataAdapter();
adapter.SelectCommand=cmd;
DataSet ds=new DataSet();
adapter.Fill(ds);
//清除参数
cmd.Parameters.Clear();
conn.Close();
return ds;
}
catch (Exception e)
{
throw e;
}
}
///
/// 用指定的数据库连接字符串执行一个命令并返回一个数据集的第一列
///
///
///例如:
/// Object obj=ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));
///
/// 命令类型(存储过程, 文本, 等等)
/// 存储过程名称或者sql命令语句
/// 执行命令所用参数的集合
/// 用 Convert.To{Type}把类型转换为想要的
public static object ExecuteScalar(string cmdText, CommandType cmdType=CommandType.Text, params MySqlParameter[] commandParameters)
{
MySqlCommand cmd=new MySqlCommand();
using (MySqlConnection connection=new MySqlConnection(connectionString))
{
PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
object val=cmd.ExecuteScalar();
cmd.Parameters.Clear();
return val;
}
}
///
/// 将参数集合添加到缓存
///
/// 添加到缓存的变量
/// 一个将要添加到缓存的sql参数集合
public static void CacheParameters(string cacheKey, params MySqlParameter[] commandParameters)
{
parmCache[cacheKey]=commandParameters;
}
///
/// 找回缓存参数集合
///
/// 用于找回参数的关键字
/// 缓存的参数集合
public static MySqlParameter[] GetCachedParameters(string cacheKey)
{
MySqlParameter[] cachedParms=(MySqlParameter[])parmCache[cacheKey];
if (cachedParms==null)
return null;
MySqlParameter[] clonedParms=new MySqlParameter[cachedParms.Length];
for (int i=0, j=cachedParms.Length; i < j; i++)
clonedParms[i]=(MySqlParameter)((ICloneable)cachedParms[i]).Clone();
return clonedParms;
}
///
/// 准备执行一个命令
///
/// sql命令
/// OleDb连接
/// OleDb事务
/// 命令类型例如 存储过程或者文本
/// 命令文本,例如:Select * from Products
/// 执行命令的参数
private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, CommandType cmdType, string cmdText, MySqlParameter[] cmdParms)
{
if (conn.State !=ConnectionState.Open)
conn.Open();
cmd.Connection=conn;
cmd.CommandText=cmdText;
if (trans !=null)
cmd.Transaction=trans;
cmd.CommandType=cmdType;
if (cmdParms !=null)
{
foreach (MySqlParameter parameter in cmdParms)
{
if ((parameter.Direction==ParameterDirection.InputOutput || parameter.Direction==ParameterDirection.Input) &&
(parameter.Value==null))
{
parameter.Value=DBNull.Value;
}
cmd.Parameters.Add(parameter);
}
}
}
}
C#连接、访问MySQL数据库相关推荐
- 远程连接访问mysql数据库
第一:更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称'%'. 或 ...
- mye连接mysql数据库_MySQL_如何在Java程序中访问mysql数据库中的数据并进行简单的操作,在上篇文章给大家介绍了Myeclip - phpStudy...
如何在Java程序中访问mysql数据库中的数据并进行简单的操作 在上篇文章给大家介绍了Myeclipse连接mysql数据库的方法,通过本文给大家介绍如何在Java程序中访问mysql数据库中的数据 ...
- qt4 连接mysql_Qt4访问mysql 数据库的简单教程
编译问题: 1.系统中安装有VC,所以头文件冲突 手工修改makefile 删除所有-I 加载VC头文件的项目 2.mysql cannot find -llibmysql 指定libmysql.a的 ...
- 如何在jsp页面中连接mysql数据库_如何使用JSP访问MySQL数据库
如何使用JSP访问MySQL数据库 更新时间:2006年10月13日 00:00:00 作者: import ="java.util.*" import ="java ...
- android与mysql数据库同步_android开发 如何通过web服务器访问MYSQL数据库并且使其数据同步到android SQLite数据库?...
通过web服务器访问MYSQL数据库有以下几个过程: 1.在MySql下创建自己的数据库和自己的表单 2.连接数据库. 3.访问数据库 1.创建web工程 (服务器端) 在Myeclipse下新建一个 ...
- SpringBoot 实战 (八) | 使用 Spring Data JPA 访问 Mysql 数据库
微信公众号:一个优秀的废人 如有问题或建议,请后台留言,我会尽力解决你的问题. 前言 如题,今天介绍 Spring Data JPA 的使用. 什么是 Spring Data JPA 在介绍 Spri ...
- Mysql —— linux下使用c语言访问mySql数据库
示例1: #include<stdio.h> #include<mysql.h> int main() { MYSQL mysql; mysql_init(&mysql ...
- MySQL笔记12:C语言访问MYSQL数据库的完整的代码例子
C语言访问MYSQL数据库的完整的代码例子 1.手写安装带mysql sdk 的mysql 2.新建控制台项目,项目属性中把 C:\Program Files\MySQL\MySQL Server 5 ...
- ODBC + WIN32 API 访问MYSQL 数据库实现简单QQ用户注册和登录 的代码分析
ODBC + WIN32 API 访问MYSQL 数据库实现简单QQ用户注册和登录 的代码分析 . / // datadase odbc1.cpp : 定义应用程序的入口点. // #inc ...
- 使用C++访问MySQL数据库(VS2019)
文章目录 1 使用C++访问MySQL数据库(VS2019) 1 使用C++访问MySQL数据库(VS2019) 在VS2019中使用C++访问MySQL数据库的方式如下: 第一步: 打开mysql的 ...
最新文章
- 用飞桨做自然语言处理:神经网络语言模型应用实例
- 【C#】【APK】APK文件解析AXML-层层深入APK文件解析之一
- 硬盘分区表知识——详解硬盘MBR(转)
- 关于JavaScript(脚本语言)
- 实现微服务架构-微服务架构需要解决的问题
- SAP Analytics Cloud里基于dimension的calculation
- LeetCode 1418. 点菜展示表(哈希map)
- python分支结构说课_Python_3.8平台上的分支结构(模块.类.函数)_11
- 【youcans 的 OpenCV 例程200篇】127. 形态算法之细化
- linux职业_对Linux的好奇心导致了意外的职业
- 【Recorder.js+百度语音识别】全栈方案技术细节
- python字典怎么输出key_python如何调用字典的key
- asp.net三层架构制作新闻管理_为什么使用PHP制作网站?
- windows下网络测试工具
- python打开默认浏览器_python 打开浏览器的方法 Python打开默认浏览器
- 计算机英语世界 中英文版,看世界=SEEING THE WORLD(英文版)
- nds文件解包_下載wwpacker 1.84 更新 給wad解包和封包的工具
- 手把手教学京东api接口全部操作过程
- 狗狗叫c语言,原来狗狗“呜呜叫”有这些含义,主人:我总算看透它了
- ubuntu 下安装fetion