导航:首页 > 源码编译 > mfc预编译sql

mfc预编译sql

发布时间:2022-06-05 00:34:40

⑴ 预编译SQL语句的使用问题

void setString(int parameterIndex,
String x)

PreparedStatement pstmt = con.prepareStatement("UPDATE table4 SET m = ? WHERE x = ?");
pstmt 对象包含语句 "UPDATE table4 SET m = ? WHERE x = ?",它已发送给DBMS,并为执行作好了准备。
2、传递 IN 参数
在执行 PreparedStatement 对象之前,必须设置每个 ? 参数的值。这可通过调用 setXXX 方法来完成,其中 XXX 是与该参数相应的类型。例如,如果参数具有java 类型 long,则使用的方法就是 setLong。setXXX 方法的第一个参数是要设置的参数的序数位置,第二个参数是设置给该参数的值。例如,以下代码将第一个参数设为 123456789,第二个参数设为 100000000:
pstmt.setLong(1, 123456789);
pstmt.setLong(2, 100000000);
一旦设置了给定语句的参数值,就可用它多次执行该语句,直到调用clearParameters 方法清除它为止。在连接的缺省模式下(启用自动提交),当语句完成时将自动提交或还原该语句。
如果基本数据库和驱动程序在语句提交之后仍保持这些语句的打开状态,则同一个 PreparedStatement 可执行多次。如果这一点不成立,那么试图通过使用PreparedStatement 对象代替 Statement 对象来提高性能是没有意义的。
利用 pstmt(前面创建的 PreparedStatement 对象),以下代码例示了如何设置两个参数占位符的值并执行 pstmt 10 次。如上所述,为做到这一点,数据库不能关闭 pstmt。在该示例中,第一个参数被设置为 "Hi"并保持为常数。在 for 循环中,每次都将第二个参数设置为不同的值:从 0 开始,到 9 结束。
pstmt.setString(1, "Hi");
for (int i = 0; i < 10; i++) {
pstmt.setInt(2, i);
int rowCount = pstmt.executeUpdate();
}

⑵ MFC编程 执行SQL数据库语句问题

把这句改一下,格式不对!变量应该有单引号括起来!
"insert into 生产计划表 values
('"+qj2+"', '"+qj3+"', '"+qj4+"', '"+qj5+"', '"+qj6+"', '"+qj7+"',
'"+qj8+"', '"+qj9+"', '"+qj10+"', '"+qj11+"', '"+qj12+"')";

对于这种sql语句,可以用输出函数输出一下,来检查sql语句是否错误!

⑶ mfc中的sql语句问题

mfc中
要把sql语句赋值给CString 变量后调用open函数。

⑷ 关于预编译SQL语句 帮忙看一下对不对啊

sql注入怎么回事:说白了就是在一个单引号上做文章,你把单引号转义就没啥问题了,预编译就是把这些字符转义后插入,其中包括单引号。

这段可以防止.

⑸ 预编译sql语句就sql绑定变量吗

1. 认识绑定变量:

绑定变量是为了减少解析的,比如你有个语句这样
select aaa,bbb from ccc where ddd=eee;
如果经常通过改变eee这个谓词赋值来查询,像如下
select aaa,bbb from ccc where ddd=fff;
select aaa,bbb from ccc where ddd=ggg;
select aaa,bbb from ccc where ddd=hhh;
每条语句都要被数据库解析一次,这样比较浪费资源,如果把eee换成“:1”这样的绑定变量形式,无论ddd后面是什么值,都不需要重复解析

Java实现绑定变量的方法:
[java] view plain
PreparedStatement pstmt = con.prepareStatement("UPDATE employees SET salay = ? WHERE id = ?");
pstmt.setBigDecimal(1, 15.00);
pstmt.setInt(2, 110592);
/result statmement: UPDATE employees SET salay = 15.00 WHERE id = 110592
pstmt.executeQuery();

假设要将id从1到10000的员工的工资都更新为150.00元,不使用绑定变量,则:
[java] view plain
sql.executeQuery("UPDATE employees SET salay = 150.00 WHERE id = 1");
sql.executeQuery("UPDATE employees SET salay = 150.00 WHERE id = 2");
sql.executeQuery("UPDATE employees SET salay = 150.00 WHERE id = 3");
sql.executeQuery("UPDATE employees SET salay = 150.00 WHERE id = 4");
....
sql.executeQuery("UPDATE employees SET salay = 150.00 WHERE id = 10000");
使用绑定变量,则:
[java] view plain
PreparedStatement pstmt;
for (id = 1; id < 10000; id )
{
if (null == pstmt)
pstmt = con.prepareStatement("UPDATE employees SET salay = ? WHERE id = ?");
pstmt.setBigDecimal(1, 150.00);
pstmt.setInt(2, id);
pstmt.executeQuery();
}
二者区别在于,不用绑定变量,则相当于反复解析、执行了1w个sql语句。使用绑定变量,解析sql语句只用了一次,之后的9999次复用第一次生成的执行计划。显然,后者效率会更高一些。
2. 什么时候不应该/不必要使用绑定变量
a. 如果你用数据仓库,一条大查询一跑几个小时,根本没必要做绑定变量,因为解析的消耗微乎其微。
b. 变量对优化器产生执行计划有很重要的影响的时候:绑定变量被使用时,查询优化器会忽略其具体值,因此其预估的准确性远不如使用字面量值真实,尤其是在表存在数据倾斜(表上的数据非均匀分布)的列上会提供错误的执行计划。从而使得非高效的执行计划被使用。

3. 绑定变量在OceanBase中的实现

前OceanBase中实现了绑定变量,目的主要是为了编程方便,而不是为了降低生成执行计划的代价。为什么呢?因为OceanBase中目前使用的是一
种”静态执行计划“,无论什么Query,执行流程都一样。OB在前端代理ObConnector中实现绑定变量,将用户传入的变量进行
to_string()操作,替代SQL语句中相应的部分,形成一个完整的SQL。然后这个SQL传递给MS,MS按照标准流程来解析和执行。相信不远的
将来,OB将会实现真正意义上的绑定变量,让用户享受到绑定变量带来的好处。

⑹ mfc 应用ado 连接 sql 数据库

教你个连接数据库的方法。首先新建一个txt文件,把他命名为aaa.udl然后双击它配置数据库的连接。配置好连接成功后,将该文件放置程序文件夹内。连接数据库时将你的_bstr_t
strConnect
=
"Provider
=
SQLOLEDB.1;Password=111;Persist
Security
Info=True
;User
Id=root;
Initial
Catalog=test;
Data
Source=localhost;";
这一句改为: _bstr_t
strConnect
="File
Name=EPXLDT.udl";然后再连接试试。 如果还不行,把你的邮箱发给我,我给你发个连接数据库的类。挺好用的

⑺ 什么是预编译 何时需要预编译 mfc面试

预编译,顾名思义,“预”表示是在真正编译前做的工作,既然也包含“编译”二字,那与一些算法逻辑是分不开的。

对于预编译,是以符号#开头的,包含以下几部分语法:
(1)#include

该指令将xxx.xxx文件的全部内容插入此处,通常文件是后缀名为"h"或"cpp"的头文件。
若用<>括起文件则在系统的INCLUDE目录中寻找文件
若用" "括起文件则在当前目录中寻找文件。
(2)#define
该指令有以下几种用法:
第一种是定义标识,标识有效范围为整个程序,形如#define XXX,常与#if配合使用;
第二种是定义常数,如#define max 100,则max代表100。
第三种是定义"函数",如#define get_max(a, b) ((a)>(b)?(a):(b)) 则以后使用get_max(x,y)就可以得到x和y中较大的数。
第四种是定义"宏函数",如#define GEN_FUN(type) type max_##type(type a,type b){return a>b?a:b;} ,使用时,用GEN_FUN(int),则此处预编译后就变成了 max_int(int a,int b){return a>b?a:b;},以后就可以使用max_int(x,y)就可以得到x和y中较大的数.比第三种,增加了类型的说明。
(3)#if、#else和#endif指令
这些指令一般这样配合使用:
#if defined(标识) //如果定义了标识
要执行的指令
#else
要执行的指令
#endif
在头文件中为了避免重复调用(比如说两个头文件互相包含对方),常采用这样的结构:
#if !(defined XXX) //XXX为一个在你的程序中唯一的标识符,
//每个头文件的标识符都不应相同。
//起标识符的常见方法是若头文件名为"abc.h"
//则标识为"abc_h"
#define XXX
真正的内容,如函数声明之类
#endif

⑻ 能执行预编译sql的是哪一个选项

能执行预编译sql的是哪一个选项
pstmt.setString(1,user.getId()+"");
pstmt.setString(2,user.getName());
pstmt.setString(3,user.getPwd());
这是以占位符方式设置 sql的参数值。

⑼ 在MFC下操作数据库的SQL语句

select count(*) as num from [User] where UserId =1111 and Pwd = 111111

⑽ 如何在MFC中执行sql server语言

用ADO,ODBC可以:
例子ODBC,
CDatabase db;
db.Open(...);//连接字符串
db.ExecuteSQL(上面那些SQL语句);
db.close();
//

阅读全文

与mfc预编译sql相关的资料

热点内容
单片机基本概念 浏览:501
租什么服务器好又便宜 浏览:713
python爬虫必背知识 浏览:676
笔记本如何与片式服务器连接 浏览:721
组态王必须用加密狗吗 浏览:279
组装单片机对比度差 浏览:930
单片机按键控制程序 浏览:924
航海pdf 浏览:419
三根阴线选股指标源码 浏览:776
PDF编译base64位文件 浏览:589
app名字注册在哪里 浏览:399
华为方舟编译器和miui 浏览:480
matlab与python接口 浏览:838
怎么看加密市场 浏览:225
linux进程间通信管道 浏览:555
外圆圆弧槽左右切削怎么编程 浏览:384
做解压的实验 浏览:691
多人伪服务器怎么开荒 浏览:608
中兴交换机端口打开命令 浏览:975
编译原理vn集合 浏览:9