JDBC:Statement问题
1、Statement问题
2、解决办法:通过PreparedStatement代替
实践:
package com.dgd.test; import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.sql.*;import java.util.Scanner; public class Test {
public static void main(String[] args) throws SQLException, ClassNotFoundException, FileNotFoundException { Scanner sc = new Scanner(System.in);
System.out.print("输入序号:");
int id=sc.nextInt();
System.out.print("输入名称:");
String name=sc.next(); // System.out.println("1111");
Class.forName("com.mysql.cj.jdbc.Driver"); String url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT";
Connection conn = DriverManager.getConnection(url, "root", "123456");
System.out.println(conn.getClass()); String sql="INSERT INTO stu VALUES(?,?,?)";
PreparedStatement s = conn.prepareStatement(sql);
s.setObject(1,id);
s.setObject(2,name);
FileInputStream fis=new FileInputStream("C:/Users/Zhang/Pictures/IMG_20190930_053816.jpg");
s.setObject(3,fis); int len=s.executeUpdate();
System.out.println(len>0?"插入成功":"插入失败"); s.close();
conn.close();
sc.close(); /*
String sql="INSERT INTO stu VALUES(2,'zhangkun')";
String sql2="SELECT * FROM stu";
Statement s=conn.createStatement();
int len=s.executeUpdate(sql);
System.out.println(len>0?"添加成功":"添加失败"); ResultSet set=s.executeQuery(sql2);
while(set.next())
{
System.out.print("学号:"+set.getInt(1)+"\t"+"姓名:"+set.getString(2)+"\n");
}
set.close();;
s.close();
conn.close();
*/ }
}
总结JDBC的步骤:
1 获取连接 注册驱动,DriverManager ,url , username, password
2 编写SQL String sql=" ?"
3 预编译SQL PreparedStatement
4 设置参数 .setObject
5 执行SQL .executeQuery or executeUpdate
6 封装结果 ResultSet
7 关闭连接 .close()
JDBC:Statement问题的更多相关文章
- Error executing DDL via JDBC Statement
© 版权声明:本文为博主原创文章,转载请注明出处 1.问题描述: 启动hibernate测试案例时报错如下: org.hibernate.tool.schema.spi.CommandAcceptan ...
- Error executing DDL via JDBC Statement 导致原因之一:列名使用了sql关键字
WARN: GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statem ...
- Jdbc -Statement
Java提供了 Statement.PreparedStatement 和 CallableStatement三种方式来执行查询语句: PreparedStatement是用于执行参数化查询 预编译s ...
- 聊聊jdbc statement的fetchSize
在使用MySQL的JDBC时,如果查询结果集过大,使用一次查询,可能会出现Java.lang.OutOfMemoryError: Java heap space问题,因为DB服务器端一次将查询到的结果 ...
- JDBC Statement对象执行批量处理实例
以下是使用Statement对象的批处理的典型步骤序列 - 使用createStatement()方法创建Statement对象. 使用setAutoCommit()将自动提交设置为false. 使用 ...
- java基础 JDBC & Statement & PreparedStatement
参考文章: http://blog.csdn.net/wang379275614/article/details/23393335 概念 JDBC-数据库连接,是由一些类和接口构成的API,是J2SE ...
- JDBC——Statement执行SQL语句的对象
Statement该对象用于执行静态SQL语句并返回它产生的结果.表示所有的参数在生成SQL的时候都是拼接好的,容易产生SQL注入的问题 PreparedStatement对象是一个预编译的SQL语句 ...
- JDBC Statement PrepareStatement
1.JDBC中Statement接口和PrepareStatement接口关系与区别 Statement接口不能使用占位符?,需要拼sql,所以没有setInt,setString等方法:Prepar ...
- JDBC statement的常用方法
Statement接口: 用于执行静态SQL语句并返回它所生成结果的对象. 三种Statement类: Statement: 由createStatement创建,用于发送简单的SQL语句(最好是不带 ...
- Java:Hibernate报错记录:Error executing DDL via JDBC Statement
想着写一篇hibernate的博文,于是准备从头开始,从官网下了最新的稳定版本来做讲述. 结果利用hibernate自动建表的时候发生下面这个问题. 我很纳闷,之前用低版本一点的没有发生这个问题啊. ...
随机推荐
- 神经网络 CNN 名词解释
隐藏层 不是输入或输出层的所有层都称为隐藏层. 激活和池化都没有权重 使层与操作区分开的原因在于层具有权重.由于池操作和激活功能没有权重,因此我们将它们称为操作,并将其视为已添加到层操作集合中. 例如 ...
- 1.2 Linux是什么,有哪些特点?
与大家熟知的 Windows 操作系统软件一样,Linux 也是一个操作系统软件,其 logo 是一只企鹅(如图 1 所示).与 Windows 不同之处在于,Linux 是一套开放源代码程序的.可以 ...
- 超全!华为交换机端口vlan详解~
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 华为交换机和其他品牌的交换机在端口的vlan划分上有一些区别,今天就和大家详细说说华为交换机的 ...
- Centos 7.4_64位系统安装指南
小土豆Linux学习随笔 -- 清听凌雪慕忆 目录 1. 范围 1.1标识 1.2 文档概述 2. 安装环境 3. 安装步骤 4. 注意事项 1. 范围 1.1标识 CentOS 7.4 64位系统安 ...
- 评价管理后台PC端
1.css动画效果 --2020.12.26 2.remove() --2020.12.28 3.执行顺序 --2020.12.30 4.联动 --2021.01.06 5.奥利给~ --202 ...
- Promise与async/await与Generator
Promise是什么: Promise是异步微任务(process.nextTick.Promise.then() catch() finally()等),用于解决异步多层嵌套回调的问题(回调地狱-- ...
- 小数据池,is和==的区别,id()
小数据池 概念 存放数据缓存的地方 目的 节省内存,提高效率 什么数据会被缓存(什么数据会放在小数据池中) 数字 字符串 布尔 优点: 可以帮我们快速的创建对象.节省内存. 缺点: ...
- 【理论积累】C语言基础理论知识【第一版】
第一个程序 #include <stdio.h> int main(){ printf("Hello World"); } 变量与常量 变量类型:整型[int].字符型 ...
- 好客租房40-react组件基础综合案例-案例需求分析
实现 案例的数据 渲染评论列表 有评论 没有评论 暂无评论 获取评论信息 包括评论人和受控组件 发表评论 更新评论 //导入react import React from 'react' import ...
- 每天一个 HTTP 状态码 202
202 Accepted 202 Accepted 表示服务器已经接受了这个请求,但是还不确定这个请求是否能够成功地被处理完.该请求最终可能会或可能不会被执行,并且在处理发生时可能会被拒绝,这是不确定 ...