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对象相关推荐

  1. Java创建MySQL句柄_MySQL创建用户(CREATE USER)

    在对 MySQL 的日常管理和实际操作中,为了避免用户恶意冒名使用 root 账号控制数据库,通常需要创建一系列具备适当权限的账号,应该尽可能地不用或少用 root 账号登录系统,以此来确保数据的安全 ...

  2. mysql创建用户变量_MySQL创建一个变量的用户?

    您可以为此使用动态查询.首先为用户名设置变量名,为密码设置变量名.语法如下-SET @anyVariableName='yourUserName'; SET @anyVariableName1='yo ...

  3. linux创建mysql视图_MySQL视图基本操作

    1.准备工作 在MySQL数据库中创建两张表balance(余额表)和customer(客户表)并插入数据. create table customer( id int(10) primary key ...

  4. mysql表创建在哪_mysql创建表命令是哪句

    如何创建MySQL数据表?下面本篇文章给大家介绍通过命令提示符创建数据表的方法,希望对你们有所帮助. 创建MySQL数据表需要以下信息: ● 表名 ● 表字段名 ● 定义每个表字段 基本语法 以下为创 ...

  5. mysql 创建唯一索引_Mysql创建索引

    零:文章概要 这篇文章,主要是和大家一起去了解 索引,然后一起使用CREATE INDEX语法给数据库中的表创建一个索引. 一:先拿电话薄做个类比 假如,一个电话薄里面包含了一个城市的所有人的姓名和电 ...

  6. mysql 创建删除表_mysql创建删除表的实例详解

    表的创建命令需要: 表的名称 字段名称 定义每个字段(类型.长度等) 语法 下面是通用的SQL语法用来创建MySQL表: CREATE TABLE table_name (column_name ...

  7. mysql创建唯一索引_mysql创建唯一索引

    资料来源:http://www.cnblogs.com/aquilahkj/archive/2011/11/07/2240310.html 查看索引  show index from 数据库表名 al ...

  8. mysql 创建删除表_mysql创建删除表的的详细解析

    本文主要介绍MySQL.html "target =" _ blank "> MySQL对创建删除表的详细分析.我希望作者收集的相关知识和数据对你有所帮助.创建 表 ...

  9. mysql存储java对象_Mysql存储java对象 | 学步园

    mysql  设置字段为 blob 保存对象,先将对象序列化为byte[]  使用 setObject(byte[] bytes) ByteArrayOutputStream baos = new B ...

  10. mysql创建函数失败_MYSQL创建函数出错如何解决

    在使用MySQL数据库时,有时会遇到MySQL函数不能创建的情况.下面就教您一个解决MySQL函数不能创建问题的方法,供您借鉴参考.希望能帮助到大家. 案例一: 目前在项目中,执行创建mysql的函数 ...

最新文章

  1. Spark LogisticRegression 逻辑回归之建模
  2. python PIL(pillow) Image模块的基础功能
  3. Python爬虫 搜索并下载图片
  4. WebAssembly 系列(五)为什么 WebAssembly 更快? 1
  5. php和web服务器,php与web服务器关系
  6. 容器中Java RAM的使用:不会丢失内存的5大技巧
  7. 【渝粤教育】 国家开放大学2020年春季 1050金融理论前沿课题 参考试题
  8. Elasticsearch -- Java High Level REST Client (RestHighLevelClient) 使用说明文档
  9. React中refs的理解
  10. laravel mysql 视图_视图入门:Laravel 支持的视图格式以及在路由中的基本使用
  11. vue ---- 监听器
  12. 尚硅谷设计模式笔记-适配器模式
  13. 我们为什么需要SDN?
  14. 微信小程序开发的坑---新建页面or修改app.json
  15. 【优化算法】多目标利希滕贝格算法(MOLA)【含Matlab源码 1434期】
  16. 过去25年八大计算机病毒:冲击波和震荡波入选
  17. mysql_front安装_MySql5.5安装步骤及MySql_Front视图配置
  18. mac的spotlight搜索系统文件
  19. 图神经网络详解(四)
  20. 成都一名程序员跳楼,程序员眼中的成都和天府软件园

热门文章

  1. 记一次上海银联总部的投标过程
  2. 【Python计量】参数假设检验
  3. token什么意思中文在C语言中,token是什么意思(token的含义及使用方法)
  4. 腾讯是如何一刀刀,在15年间干死那些竞争对手的?
  5. u盘安装原版window10系统
  6. U盘安装ESXI 6.7,并使用U盘启动服务器
  7. Nature子刊:使用纳米孔测序从微生物组中得到完整闭环的细菌基因组
  8. 网页地址栏?和的意义
  9. C语言中简单冒泡排序不花里胡哨
  10. upnp+摄相头捕捉服务器端程序