MySQL数据库的JDBC及错误解决

 

一、下载Java 连接 MySQL 需要驱动包。

最新版下载地址为:http://dev.mysql.com/downloads/connector/j/,
解压后得到jar库文件,然后在对应的项目中导入该库文件。

关于驱动我想说一点,也是最近实验才发现的,以前都没有发现,总是出现一些驱动连接错误,更加详细了解可以参照点我这篇博文。

二、代码如下:

package com.stu.demo;


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;


public class Test01 {

public static void main(String[] args) throws Exception {

// 加载驱动

Class.forName("com.mysql.jdbc.Driver");


// 建立连接

String url = "jdbc:mysql://localhost:3306/mydb";

String user = "root";

String password = "root";

Connection conn = DriverManager.getConnection(url, user, password);


// 获取传输器对象建立会话

String sql = "select * from dept where deptno=?";

// sql = "insert into dept values (?, ?, ?)";

PreparedStatement ps = conn.prepareStatement(sql);

ps.setInt(1, 30);

// ps.setInt(1, 100);


// ps.setString(2, "保洁部");

// ps.setString(3, "全国");


// 输出结果

ResultSet rs = ps.executeQuery();

while (rs.next()) {

System.out.println(rs.getInt(1));

System.out.println(rs.getString(2));

System.out.println(rs.getString(3));

}

//关闭数据库

rs.close();

ps.close();

conn.close();

}

}

三、注意:

1、PreparedStatement是 Statement 的子类,PreparedStatement 继承了 Statement 的所有功能。三种方法 execute、 executeQuery 和 executeUpdate 已被更改以使之不再需要参数(使用参数会出现SQL语句错误)

2、PreparedStatement 的执行效率高于Statement对象,对于需要多次执行的SQL语句经常使用PreparedStatement 。PreparedStatement可以使用占位符 " ? ",是预编译的,批处理比Statement效率
高。

3、注意PreparedStatement对象独有的executeQuery()方法是没有参数的,而Statement的executeQuery()是需要参数(SQL语句)的。因为在创建PreparedStatement对象时已经让它与一条SQL模板绑定在一起了,所以在调用它的executeQuery()和executeUpdate()方法时就不再需要参数了。PreparedStatement最大的好处就是在于重复使用同一模板,给予其不同的参数来重复的使用它。这才是真正提高效率的原因。


示例代码:

package com.stu.demo;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;


public class Test01 {
public static void main(String[] args) throws Exception {
//加载驱动
Class.forName("com.mysql.jdbc.Driver");

//建立连接
String url = "jdbc:mysql://localhost:3306/mydb";
String user = "root";
String password = "root";
Connection conn = DriverManager.getConnection(url, user, password);

//建立会话
String sql = "select * from dept where deptno=?";
// sql = "insert into dept values (?, ?, ?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, 10);
// ps.setInt(1, 100);

// ps.setString(2, "保洁部");
// ps.setString(3, "全国");

//输出结果
ResultSet rs = ps.ex);
while (rs.next()) {
System.out.println(rs.getInt(1));
System.out.println(rs.getString(2));
System.out.println(rs.getString(3));
}
}
}

很小的区别,和老师找了好久才出现的
Statement:ResultSet rs = ps.executeQuery(sql);                     ----->错误
prepareStatement:ResultSet rs = ps.executeQuery():             ------>正确

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值