创建mysql对象_mysql创建statement对象
mysql创建statement对象
关注:56 答案:4 mip版
解决时间 2021-01-24 21:05
提问者西伯利亚狼
2021-01-24 13:31
package com.yxq.toolsbean;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DB {
private final String url = "jdbc:mysql://localhost:3306/mysql";
private final String userName = "root";
private final String password = "";
private Connection conn = null;
private Statement stm=null;
public DB(){
try {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("加载数据库成功!");
} catch (Exception e) {
e.printStackTrace();
System.out.println("加载数据库驱动失败!");
}
}
public void createCon() {
try {
Connection conn = DriverManager.getConnection(url, userName, password);
System.out.println("获取数据库连接成功!");
} catch (Exception e) {
e.printStackTrace();
System.out.println("获取数据库连接失败!");
}
}
public void getStm(){
createCon();
try {
Statement stm=conn.createStatement();
System.out.println("创建Statement对象成功!");
} catch (SQLException e) {
e.printStackTrace();
System.out.println("创建Statement对象失败!");
}
}
我用测试类test测试以上代码
package com.yxq.toolsbean;
public class Test {
public static void main(
String[] args) {
DB db=new DB();
db.createCon();
db.getStm();
}
}
报错为
加载数据库成功!
获取数据库连接成功!
获取数据库连接成功!
Exception in thread "main" java.lang.NullPointerException
at com.yxq.toolsbean.DB.getStm(DB.java:40)
at com.yxq.toolsbean.Test.main(Test.java:10)
有空你们自己把代码粘贴到myeclipse看一下
最佳答案
二级知识专家归人
2021-01-24 14:37
在JDBC里面,statement只是一个接口并没有实现?那为什么能够创建statement对象?
不要思维定式在 Statement stmt = new Statement();才是创建对象 这种思维上.
创建对象方式有很多 我给你写了个类似的 名字也用了Statement不过只是个名字而已 真实的Statement实现方法你可以看源码,我的代码只是告诉你"创建对象方式有很多"
public interface Statement {
}
public class Preparedment implements Statement {
public static Statement getSatementInstance(){
return new Preparedment();
}
}
现在你可以用以下来创建 一个接口 的对象
Statement stm1 = Preparedment.getSatementInstance();
Statement stm2 = new Preparedment();
全部回答
1楼这辈子只爱你
2021-01-24 17:34
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBConn {
private Connection conn;
String strMysqlURL = "jdbc:mysql://127.0.0.1:3306/bookroom?user=root&password=arone";
public Connection getConnection() {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(strMysqlURL);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
public static void main(String args[]) {
DBConn con = new DBConn();
con.getConnection();
}
public DBConn() { // 初始化时建立数据源的连接
this.getConnection();
}
public synchronized Statement getStmt() throws Exception {
Statement stmt;
stmt = conn.createStatement();
return stmt;
}
// 创建预处理会话对象
public synchronized PreparedStatement getPstmt(String sql) throws Exception {
PreparedStatement pstmt=null;
pstmt = conn.prepareStatement(sql);
return pstmt;
}
// 执行查询操作
public synchronized ResultSet query(String sql) throws Exception {
try {
Statement stmt;
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
return rs;
} catch (Exception e) {
System.out.println(e.toString());
return null;
}
}
public boolean hasUserName(String sql) { // 判断重复
try {
Statement stmt;
stmt = getConnection().createStatement();
ResultSet rs = stmt.executeQuery(sql);
rs.next();
if (rs.getString("num").equals("0")) {
return false;
} else {
return true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
}
// 执行更新操作
public synchronized int update(String sql) throws Exception {
int nn=0;
Statement stmt=null;
try {
stmt = conn.createStatement();
nn = stmt.executeUpdate(sql);
} catch (Exception e) {
System.out.println(e.toString());
nn = 0;
}
return nn;
}
// 关闭数据库连接
public void DBclose() throws SQLException {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
2楼儚迴从偂
2021-01-24 17:08
java.sql里面封装的是类可以支持所有jdbc规范的数据库软件,如oracle和sqlserver等。
使用java.sql不存在兼容性问题。
com.mysql.jdbc 是专门针对mysql 优化过的
3楼月洸芐啲溫拵
2021-01-24 16:04
。。靠了,肯定错啊,你那个createCon中的Connection conn是局部变量而且他的值改变又不影响类中的那个Connection对象。你把createCon中别定义Connection conn,直接conn,肯定对
直接用createCon() 返回Connection对象多好,一般都这么写
还有连接两次数据库,没必要,也很危险。
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
点此我要举报以上信息!
推荐资讯
大家都在看
创建mysql对象_mysql创建statement对象相关推荐
- Java创建MySQL句柄_MySQL创建用户(CREATE USER)
在对 MySQL 的日常管理和实际操作中,为了避免用户恶意冒名使用 root 账号控制数据库,通常需要创建一系列具备适当权限的账号,应该尽可能地不用或少用 root 账号登录系统,以此来确保数据的安全 ...
- mysql创建用户变量_MySQL创建一个变量的用户?
您可以为此使用动态查询.首先为用户名设置变量名,为密码设置变量名.语法如下-SET @anyVariableName='yourUserName'; SET @anyVariableName1='yo ...
- linux创建mysql视图_MySQL视图基本操作
1.准备工作 在MySQL数据库中创建两张表balance(余额表)和customer(客户表)并插入数据. create table customer( id int(10) primary key ...
- mysql表创建在哪_mysql创建表命令是哪句
如何创建MySQL数据表?下面本篇文章给大家介绍通过命令提示符创建数据表的方法,希望对你们有所帮助. 创建MySQL数据表需要以下信息: ● 表名 ● 表字段名 ● 定义每个表字段 基本语法 以下为创 ...
- mysql 创建唯一索引_Mysql创建索引
零:文章概要 这篇文章,主要是和大家一起去了解 索引,然后一起使用CREATE INDEX语法给数据库中的表创建一个索引. 一:先拿电话薄做个类比 假如,一个电话薄里面包含了一个城市的所有人的姓名和电 ...
- mysql 创建删除表_mysql创建删除表的实例详解
表的创建命令需要: 表的名称 字段名称 定义每个字段(类型.长度等) 语法 下面是通用的SQL语法用来创建MySQL表: CREATE TABLE table_name (column_name ...
- mysql创建唯一索引_mysql创建唯一索引
资料来源:http://www.cnblogs.com/aquilahkj/archive/2011/11/07/2240310.html 查看索引 show index from 数据库表名 al ...
- mysql 创建删除表_mysql创建删除表的的详细解析
本文主要介绍MySQL.html "target =" _ blank "> MySQL对创建删除表的详细分析.我希望作者收集的相关知识和数据对你有所帮助.创建 表 ...
- mysql存储java对象_Mysql存储java对象 | 学步园
mysql 设置字段为 blob 保存对象,先将对象序列化为byte[] 使用 setObject(byte[] bytes) ByteArrayOutputStream baos = new B ...
- mysql创建函数失败_MYSQL创建函数出错如何解决
在使用MySQL数据库时,有时会遇到MySQL函数不能创建的情况.下面就教您一个解决MySQL函数不能创建问题的方法,供您借鉴参考.希望能帮助到大家. 案例一: 目前在项目中,执行创建mysql的函数 ...
最新文章
- Spark LogisticRegression 逻辑回归之建模
- python PIL(pillow) Image模块的基础功能
- Python爬虫 搜索并下载图片
- WebAssembly 系列(五)为什么 WebAssembly 更快? 1
- php和web服务器,php与web服务器关系
- 容器中Java RAM的使用:不会丢失内存的5大技巧
- 【渝粤教育】 国家开放大学2020年春季 1050金融理论前沿课题 参考试题
- Elasticsearch -- Java High Level REST Client (RestHighLevelClient) 使用说明文档
- React中refs的理解
- laravel mysql 视图_视图入门:Laravel 支持的视图格式以及在路由中的基本使用
- vue ---- 监听器
- 尚硅谷设计模式笔记-适配器模式
- 我们为什么需要SDN?
- 微信小程序开发的坑---新建页面or修改app.json
- 【优化算法】多目标利希滕贝格算法(MOLA)【含Matlab源码 1434期】
- 过去25年八大计算机病毒:冲击波和震荡波入选
- mysql_front安装_MySql5.5安装步骤及MySql_Front视图配置
- mac的spotlight搜索系统文件
- 图神经网络详解(四)
- 成都一名程序员跳楼,程序员眼中的成都和天府软件园