1.首先下载与电脑上的mysql版本对应的jdbc,复制jdbc粘贴到我们的servlet项目(项目创建)WebContent->WEB-INF->lib下,如图所示:
2.与数据库建立连接,代码如下
package mysql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.Statement;
public class sql {
public static void main(String[] args) {
}
public static void JDBC() {
String url="jdbc:mysql://localhost:3306/databasename?useUnicode=true&characterEncoding=utf-8";
//如果使用的是远程数据库,那么localhost换成远程数据库公网地址
//databasename写自己创建的数据库名
String user="root";//我们访问数据库一般使用root用户的形式访问,所以写root就行
String password="password";//数据库密码
try {
Class.forName("com.mysql.jdbc.Driver");//定义驱动
Connection connection=(Connection) DriverManager.getConnection(url, user, password);
//与数据库建立连接
Statement statement=(Statement) connection.createStatement();//创建编译器
String sql="select * from tablename";//要执行的sql语句
ResultSet result=statement.executeQuery(sql);//执行结果,数据查询时使用
while(result.next())//结果遍历
System.out.println(result.getString("id"));
//.getString(columns)括号内填写数据库中的表的列名
} catch (Exception e) {
e.printStackTrace();
}
}
}
写完上面的代码之后有必要了解一下jdbc提供的四个接口(简单来说就是四个类,让我们使用这些类实现后端与mysql之间的交互):
DriverManager:驱动管理。用来注册jdbc
Connection:连接对象。用来与数据库建立连接
Statement:SQL编译器。向数据库发送可执行的sql语句
Resultset:查询结果集。获取返回的查询结果[只有数据查询时使用]
3.Statement:SQL编译器
a)statement.executeQuery(sql);//数据查询时使用,sql为查询语句。使用ResultSet类型的变量接收返回值。
String sql="select * from tablename;";
ResultSet result=statement.executeQuery(sql);
b) statement.executeUpdate(sql);//数据插入,修改,删除时使用。可以使用int类型的变量接受返回值,1指更新成功,0则失败。
//插入
String sql=new String("insert into student(name) value('nr');");
statement.executeUpdate(sql);
//修改
String sql=new String("update student set age=22 where id=14;");
statement.executeUpdate(sql);
//删除
String sql=new String("delete from student where id=25;");
statement.executeUpdate(sql);
4.Resultset:查询结果集
用来接收statement.executeQuery(sql)返回的值。用Resultset.next()遍历数据。
ResultSet result=statement.executeQuery(sql);
while(result.next())//result的遍历
System.out.println(result.getString(column));//通过列名访问数据,column为数据库中表的列名
5.使用完要进行close操作,这是为了节省电脑资源,避免jdbc长期占用资源出现错误。
//使用完之后从后往前的顺序关闭
if(result!=null)//当资源不为空null进行关闭
result.close();
if(statement!=null)
statement.close();
if(connection!=null)
connection.close();
6.源代码
package mysql;
import java.sql.DriverManager;
import java.sql.ResultSet;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
public class sql {
public static void main(String[] args) {
JDBC();
}
public static void JDBC() {
String url="jdbc:mysql://localhost:3306/databasename?useUnicode=true&characterEncoding=utf-8";
String user="root";
String password="password";
try {
Class.forName("com.mysql.jdbc.Driver");
Connection connection=(Connection) DriverManager.getConnection(url, user, password);
Statement statement=(Statement) connection.createStatement();
String sql="delete from student where id=25;";
int i=statement.executeUpdate(sql);
System.out.println(i);
sql=new String("select * from student");
ResultSet result=statement.executeQuery(sql);
while(result.next())
System.out.println(result.getString("id"));
if(result!=null)
result.close();
if(statement!=null)
statement.close();
if(connection!=null)
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}