我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL预处理

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL预处理

MySQL预处理

C++预处理接口: 
preparable_stmt 语句中的? 是个占位符,字符串类型需要加上单引号。 
创建预处理对象sql::PreparedStatement* tPreStmt = db_conn->prepareStatement(“update user_table set user_level=? where user_id=?”);  
参数设置接口:setBigInt,setBlob,setBoolean,setDateTime,setDouble,setInt,setUInt,setInt64,setUInt64,setNull,setString。 
每次调用结束之后需要调用clearParameters接口清空参数,方便下次调用。

实例代码:

#pragma once

#include 
#include 
#include 
#include 
#include 
#include 
#include   
#include   
#include   
#include   
#include 

int main()
{
	std::string url = "127.0.0.1:3306";
	std::string user = "test";
	std::string passwd = "123";

	sql::Driver* driver = sql::mysql::get_driver_instance();
	if (driver)
	{
		sql::Connection*  conn = driver->connect(url, user, passwd);
		if (conn == nullptr)
		{
			return -1;
		}
		std::string stmt_str = "update user_table set user_level=? where user_id=?";
		sql::PreparedStatement* preStmt = m_conn->prepareStatement(stmt_str);
		preStmt->setUInt(0,1);
		preStmt->setUInt64(1,132129938);
		preStmt->executeUpdate();
	}
	else
	{
		return -1;
	}	
	return 0;
}

项目实践中不会有这么简单的逻辑,通常需要在每个连接中初始化好预处理语句,甚至还需要建立MySql连接池,下面给出一个示例代码:

#pragma once

#include 
#include 
#include 
#include 
#include 
#include 
#include   
#include   
#include   
#include   
#include 

class MysqlConn
{
public:
	MysqlConn();
	~MysqlConn();

	bool ConnectDb(const std::string& url, const std::string& user, const std::string& passwd);
	bool AddPreStatement(int id, const std::string& stmts);

	sql::Connection* GetConn() { return m_conn; }
	sql::PreparedStatement* GetPreStatement(int id);

private:
	std::string m_url;
	std::string m_user;
	std::string m_passwd;

	sql::Driver*   m_driver = nullptr;
	sql::Connection* m_conn = nullptr;

	std::map m_stmts;
};

MysqlConn::MysqlConn()
{

}

MysqlConn::~MysqlConn()
{
	std::map::iterator it = m_stmts.begin();
	while (it != m_stmts.end())
	{
		delete it->second;
		it->second = nullptr;
		it++;
	}
	m_stmts.clear();
	
	if (m_conn)
	{
		m_conn->close();
		delete m_conn;
		m_conn = nullptr;
	}
}

bool MysqlConn::ConnectDb(const std::string& url, const std::string& user, const std::string& passwd)
{
	m_url    = url;
	m_user   = user;
	m_passwd = passwd;

	m_driver = sql::mysql::get_driver_instance();
	
	if (m_driver)
	{
		m_conn = m_driver->connect(m_url, m_user, m_passwd);
		if (m_conn == nullptr)
		{
			return false;
		}
	}
	else
	{
		return false;
	}
	return true;
}

bool MysqlConn::AddPreStatement(int id, const std::string& stmts)
{
	sql::PreparedStatement* tVal = m_conn->prepareStatement(stmts);
	if (!tVal)
	{
		return false;
	}

	std::map::iterator it = m_stmts.find(id);
	if (it != m_stmts.end())
	{
		delete it->second;
		it->second = tVal;
	}
	else
	{
		m_stmts[id] = tVal;
	}
	return true;
}

sql::PreparedStatement* MysqlConn::GetPreStatement(int id)
{
	std::map::iterator it = m_stmts.find(id);
	if (it != m_stmts.end())
	{
		it->second->clearParameters();
		return it->second;
	}
	return nullptr;
}

 

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL预处理

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL预处理

C++预处理接口:  preparable_stmt 语句中的? 是个占位符,字符串类型需要加上单引号。  创建预处理对象sql::PreparedStatement* tPreStmt = db_conn->prepareStatement(“update
MySQL预处理
2018-04-18

PHP MySQL 预处理语句

预处理语句对于防止 MySQL 注入是非常有用的。预处理语句及绑定参数预处理语句用于执行多个相同的 SQL 语句,并且执行效率更高。预处理语句的工作原理如下:预处理:创建 SQL 语句模板并发送到数据库。预留的值使用参数 "?" 标记 。例
2022-05-31

Mysql prepare预处理如何使用

在MySQL中,预处理语句可以用来执行动态SQL语句,可以有效地防止SQL注入攻击,并提高SQL语句的执行效率。使用预处理语句的步骤如下:1. 创建预处理语句:使用`PREPARE`语句创建一个预处理语句。语法如下:```sqlPREPAR
2023-08-09

批处理中如何实现预处理

这篇文章主要为大家展示了“批处理中如何实现预处理”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“批处理中如何实现预处理”这篇文章吧。一、预处理究竟要做什么? 根据我的经验,预处理要做的是变量值的替
2023-06-08

1.3预处理与热图

在数据分析当中的东西还是很多的,我在这里只是启发式的介绍一下,了解到这方面的东西之后,使用的时候可以更快的找到解决办法,希望能对大家有所帮助。  这次,依然是使用的sklearn中的iris数据集,对其进行通过热图来展示。  sklearn
2023-01-30

thinkphp中有没有预处理

这篇文章主要介绍“thinkphp中有没有预处理”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“thinkphp中有没有预处理”文章能帮助大家解决问题。thinkphp中有预处理。“ThinkPHP3
2023-06-29

PHP 中的 MySQL 预处理语句的优点是什么?

php 中的 mysql 预处理语句具有以下优点:提高安全性,防止 sql 注入;提高性能,通过预编译缓存查询;存储参数化查询,可重复使用;数据类型转换,确保正确插入数据;调试方便,提供错误信息。PHP 中 MySQL 预处理语句的优点在
PHP 中的 MySQL 预处理语句的优点是什么?
2024-05-11

pdo中的预处理语法

什么叫预处理语法就是,为了“重复执行”多条结构类似的sql语句,而将该sql语句的形式“进行预先处理”(编译);该sql语句的“形式”中,含有“未给定的数据项”。然后,到正式执行的时候,只要给定相应的形式上的“数据项”,就可以更快速方便执行。比如(有两种预定义
pdo中的预处理语法
2021-12-20

大数据预处理综述

数据预处理背景大数据项目开发流程数据质量准确性:数据是正确的,数据存储在数据库中的值对应于真实世界的值。数据不准确的原因数据收集设备故障。数据输入错误。数据传输过程出错。命名约定、数据输入、输入字段格式不一致。相关性:指数据与特定的应用和领域有关。相关性应用场
大数据预处理综述
2021-12-10

编程热搜

目录