数据库预编译怎么看
// DBMS.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;
EXEC sql BEGIN DECLARE SECTION;
char department[20];
char HSno[9];
char HSname[20];
char HSsex[2];
int HSage;
int NEWAGE;
EXEC SQL END DECLARE SECTION;
long SQLCODE;
EXEC SQL INCLUDE sqlca;//定义SQL通信区
int main()
{
int count=0;
char yn;
printf("Please choose the department name(CS/MA/IS):");
scanf("%s",&department);
EXEC SQL CONNECT TO TEST@localhost:54321 USER "SYSTEM"/"MANAGER";//连接到数据库服务器
EXEC SQL DECLARE SX CURSOR FOR/*定义游标SX*/
SELECT Sno,Sname,Ssex,Sage
FROM Student
WHERE Sdept=:department;
EXEC SQL OPEN SX;
for(;;)
{
EXEC SQL FETCH SX INTO :HSno,:HSname,:HSsex,:HSage;
if(sqlca.sqlcode!=0)
{
break;
}
if(count++==0)
printf("\n% -10s % -20s % -10s % -10s\n","Sno","sname","Ssex","Sage");
printf("% -10s % -20s % -10s % -10d \n",HSno,HSname,HSsex,HSage);
printf("UPDATE AGE(y/n)?");
do
{
scanf("%c",&yn);
}
while(yn!='N'&&yn!='n'&&yn!='Y'&&yn!='y');
if(yn=='y'||yn=='Y')
{
printf("INPUT NEW AGE:");
scanf("%d",&NEWAGE);
EXEC SQL UPDATE Student
SET Sage=:NEWAGE
WHERE CURRENT OF SX;
}
}
EXEC SQL CLOSE SX;
EXEC SQL COMMIT WORK;
EXEC SQL DISCONNECT TEST;
}
❷ java里的(关于PreparedStatement接口)预编译
当你向数据库提交SQL语句后,数据库要对这条语句进行编译,例如语法分析、优化路径选择、分配资源等一系列操作,这是需要时间的。
当你向数据库插入10条记录时,如果使用常规做法,数据库需要编译10次。
而使用PreparedStatement接口,数据库只需要编译一次,其他只是更改参数就可以了。
所以,当你向数据库中进行批量操作的时候,预编译效率比较高。
❸ 预编译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();
}
❹ 查看java 预编译sql
看不到的,这些使用的是数据库的占位符。如果一定要看且用了hibernate的话,把hibernate的trace级别日志也打开,能看到参数的绑定情况
❺ 数据库预编译语句in(查询条件),如果查询条件只有一个,可以运行,如果多个条件,则不能运行,为什么
你这个是把usercode的值作为变量给了语句里的?
这时候就有个问题
你的userCode是string类型的数组吧。。。
那么传进去的应该是'10086','10087'
如果不是这个问题你就在执行SQL语句之前先输出一下语句 日志里看看是哪里格式不对了
❻ jdbc链接MySql数据库,预编译的sql语句怎么使用批处理执行
是指应用程序的方法吧。如果你是用hibernate、iBATIS等连接数据库,直接从log4j配置文件中打开调试模式就行,如果用的自己写的jdbc连接,那就只能在执行前打印了
❼ 在java中如何实现预编译
/*
* ProCompile.java *预处理要编译的文件,删除多余的空白,注释,换行,回车等
* Created on 2007年9月18日, 下午8:58 */ package javacompile; import java.io.*;
import java.util.regex.*;
import javax.swing.JOptionPane; /** * @com.junjian.sun public class PerCompile { File f = null;
String fileString = null;
Pattern p = null;
Matcher m = null;
String regex; //正则表达式 //初始化p
public PerCompile() {
regex ="(//.+)" + //(//.+) 对应单行注释
//"|(/\\*(.+\\n)+\\*/)"+ // 想对应多行注释... "|(\\r\\n)" + "|(\\n)"+//(\\r\\n)|(\\n)对应换行
"|(\\B\\s+)" ; // 空白符
String ss;
f = new File(new JOptionPane()
.showInputDialog("请输入文件所在路径~"));
try {
BufferedReader bf = new BufferedReader(new FileReader(f));
ss = bf.readLine()+"\n";
fileString = ss; //如果没有这两句,ss的开头会有“null”
while((ss = bf.readLine())!= null){
fileString += ss+"\n"; bf.close();
} catch (IOException ex) {
ex.printStackTrace(); p = Pattern.compile(regex);
m = p.matcher(fileString); //执行替换所有多余空行,空白符,注释
void Dels(){
System.out.println("before: "+fileString);
if(m.find()) System.out.println("find!!");
System.out.println(m.replaceAll("")); } }
-
❽ c语言gdb调试时怎么看预编译宏是否定义
gdb 看不了任何与宏有关的内容。宏在编译之前,就被预编译器替换掉了,对于编译器来说,根本看不到所谓的宏,所以编译出来的二进制代码中,也根本不会包含任何宏本身的信息,gdb也自然无法获取信息了。
❾ php使用预编译语句,怎样查看绑定后执行的语句
你使用的是PDO吗?如果是只能查看mysql操作日志了,因为PDO预处理,传递过去的是参数,不是sql语句。你可以直接打印变更的参数进行跟踪。
❿ 什么叫预编译语句。
预编译就是在所有的程序启动编译前,对某些特殊的程序进行编译,这些特殊的程序一般是类库的文件,全局变量或其他可能要被非预编译代码使用的程序。
