返回顶部
首页 > 资讯 > 数据库 >MySQL预处理
  • 477
分享到

MySQL预处理

MySQL预处理 2018-04-18 15:04:33 477人浏览 绘本
摘要

c++预处理接口:  preparable_stmt 语句中的? 是个占位符,字符串类型需要加上单引号。  创建预处理对象sql::PreparedStatement* tPreStmt = db_conn->prepareStatemen

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;
}

 

 

您可能感兴趣的文档:

--结束END--

本文标题: MySQL预处理

本文链接: https://lsjlt.com/news/4313.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL预处理
    C++预处理接口:  preparable_stmt 语句中的 是个占位符,字符串类型需要加上单引号。  创建预处理对象sql::PreparedStatement* tPreStmt = db_conn->prepareStatement...
    99+
    2018-04-18
    MySQL预处理
  • mysql预处理语句
    set @sql0 =strData;prepare tem from @sql0;execute tem;     ...
    99+
    2024-04-02
  • PHP MySQL 预处理语句
    预处理语句对于防止 MySQL 注入是非常有用的。 预处理语句及绑定参数 预处理语句用于执行多个相同的 SQL 语句,并且执行效率更高。 预处理语句的工作原理如下: 预处理:创建 ...
    99+
    2022-05-31
    php mysql
  • MySQL预处理技术是什么
    MySQL预处理技术是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。  传统mysql处理流程  1, 在客户端准备sql...
    99+
    2024-04-02
  • Mysql prepare预处理如何使用
    在MySQL中,预处理语句可以用来执行动态SQL语句,可以有效地防止SQL注入攻击,并提高SQL语句的执行效率。使用预处理语句的步骤...
    99+
    2023-08-09
    Mysql prepare
  • Mysql prepare预处理的具体使用
    目录1.预处理2.预处理应用方式A.例子:B.预处理对执行计划变化跟踪C.存储过程包含预处理D.通过profile 查看解析语句的开销3.总结MySQL PREPARE预处理技术意义...
    99+
    2024-04-02
  • mysql预处理如何防止sql注入
    mysql预处理防止sql注入的方法:预处理的语法://发送一条sql给mysql服务器,mysql服务器会解析这条sql  $pdo->prepare('select * from b...
    99+
    2024-04-02
  • C语言预编译#define(预处理)
    目录一、预定义符号二、#define 定义标识符三、#define 定义宏四、#define 替换规则:五、#和## 两个符号(少见)六、宏和函数的对比七、#undef一、预定义符号...
    99+
    2024-04-02
  • python数据预处理
    Ⅰ.数据源 Ⅱ.导入库 import pandas as pdimport numpy as npfrom scipy import statsimport matplotlib.pyplot a...
    99+
    2023-09-21
    python 数据分析
  • MySQL中预处理语句prepare、execute、deallocate怎么用
    这篇文章将为大家详细讲解有关MySQL中预处理语句prepare、execute、deallocate怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 ...
    99+
    2024-04-02
  • 批处理中如何实现预处理
    这篇文章主要为大家展示了“批处理中如何实现预处理”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“批处理中如何实现预处理”这篇文章吧。一、预处理究竟要做什么? 根据我的经验,预处理要做的是变量值的替...
    99+
    2023-06-08
  • torchvision.transforms 数据预处理:ToTensor()
    文章目录 1、ToTensor() 函数的作用2、读取图像时 PIL 和 opencv 的选择2.1 使用 PIL2.2 使用 opencv 3、ToTensor() 的使用3.1 关键...
    99+
    2023-10-08
    python numpy pytorch
  • 1.3预处理与热图
      在数据分析当中的东西还是很多的,我在这里只是启发式的介绍一下,了解到这方面的东西之后,使用的时候可以更快的找到解决办法,希望能对大家有所帮助。   这次,依然是使用的sklearn中的iris数据集,对其进行通过热图来展示。   s...
    99+
    2023-01-30
    热图
  • MySQL中使用预处理技术有什么作用
    本文主要给大家简单讲讲MySQL中使用预处理技术有什么作用,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望MySQL中使用预处理技术有什么作用这篇文章可以给大...
    99+
    2024-04-02
  • 大数据预处理综述
    数据预处理背景 大数据项目开发流程 数据质量 准确性:数据是正确的,数据存储在数据库中的值对应于真实世界的值。 数据不准确的原因 数据收集设备故障。 数据输入错误。 数据传输过程出错。 命名约定、数据输入、输入字段格式不...
    99+
    2021-12-10
    大数据预处理综述
  • pdo中的预处理语法
    什么叫预处理语法 就是,为了“重复执行”多条结构类似的sql语句,而将该sql语句的形式“进行预先处理”(编译); 该sql语句的“形式”中,含有“未给定的数据项”。 然后,到正式执行的时候,只要给定相应的形式上的“数据项”,就可以更快速方...
    99+
    2021-12-20
    pdo中的预处理语法
  • C语言预处理详解
    目录一,预定义符号二,#define1,#define 定义标识符2,#define 定义宏3,#define 替换规则三,##的作用1,概念2,带副作用的宏参数3,宏和函数对比四,...
    99+
    2024-04-02
  • 程序环境和预处理
    > 作者简介:დ旧言~,目前大一,现在学习Java,c,c++,Python等 > 座右铭:松树千年终是朽,槿花一日自为荣。 > 望小伙伴们点赞👍收藏✨加关注哟💕💕  🌟...
    99+
    2023-09-22
    c语言
  • thinkphp中有没有预处理
    这篇文章主要介绍“thinkphp中有没有预处理”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“thinkphp中有没有预处理”文章能帮助大家解决问题。thinkphp中有预处理。“ThinkPHP3...
    99+
    2023-06-29
  • PHP 中的 MySQL 预处理语句的优点是什么?
    php 中的 mysql 预处理语句具有以下优点:提高安全性,防止 sql 注入;提高性能,通过预编译缓存查询;存储参数化查询,可重复使用;数据类型转换,确保正确插入数据;调试方便,提供...
    99+
    2024-05-11
    php mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作