发表于: 2018-03-28 23:53:51

1 616


日期:3月28日

今天学习时间4小时

今天完成的事情:

1.自己编写statement方式下的增删查改的程序。代码如下

package my;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class Demo5 {

public static Connection conn;

public static Connection connection() {//链接数据库

try {

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

conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?useSSL=false","root","ll..123");

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return conn;

}

static void select() {//查询

conn=Demo5.connection();

String sql="select * from tb_test";

Statement stmt;

ResultSet rs;

try {

stmt = conn.createStatement();

rs=stmt.executeQuery(sql);

while(rs.next()){

System.out.println("ID="+rs.getInt(1)+" 姓名:"+rs.getString(2)+" QQ:"+rs.getString(3)+" dizhi:"+rs.getString(4));

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

static void create() {//建表

conn=Demo5.connection();

String sql="CREATE TABLE tb_stu (ID int not null primary key, name varchar(20),phone varchar(20))";

Statement stmt;

try {

stmt=conn.createStatement();

stmt.executeUpdate(sql);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

static void update() {//更改数据

conn=Demo5.connection();

String sql="update tb_test set name=\"anyask\" where id=1";

Statement stmt;

try {

stmt=conn.createStatement();

stmt.executeUpdate(sql);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

static void insert() {//插入数据

conn=Demo5.connection();

String sql="insert into tb_test (name,QQ,province) values (\"yinxianyun\",4564156,\"jiangsu\")";

Statement stmt;

try {

stmt=conn.createStatement();

stmt.executeUpdate(sql);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

static void delete() {//删除数据

conn=Demo5.connection();

String sql="delete from tb_test where name=\"yinxianyun\"";

Statement stmt;

try {

stmt=conn.createStatement();

stmt.executeUpdate(sql);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public static void main(String[] args) {

delete();

}

}

先建立数据库连接,然后分别编写增、删、查、改、建表这五个函数,当需要用到哪个函数的时候,在主方法中调用即可。


2.preparestatement方式下的增删查改。下面是代码(有错):

package my;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

public class Demo6 {

static String Driver="com.mysql.jdbc.Driver";

static String url="jdbc:mysql://127.0.0.1:/3306/test?useSSL=true";

static String name="root";

static String password="ll..123";

static Connection conn;

static PreparedStatement sql;

static ResultSet rs;

public static Connection connection() {

try {

Class.forName(Driver);

conn=DriverManager.getConnection(url,name,password);

} catch (Exception e) {

// TODO Auto-generated catch block

}

return conn;

}

public static void main(String[] args) {

conn=Demo6.connection();

try {

// sql=conn.prepareStatement("create table tb_uesr (ID int not null primary key,name varchar(20),password varchar(20))");

// sql=conn.prepareStatement("insert into tb_test (name,QQ,province) values (\"小明\",486465,\"shandong\")");

// sql.executeUpdate();

// sql=conn.prepareStatement("delete from tb_test where ID=?");

// sql.setInt(1, 3);

// sql.executeUpdate();

// sql=conn.prepareStatement("update tb_test set name=\"?\" where ID=?");

// sql.setString(1, "阿花");

// sql.setInt(2, 2);

// sql.executeUpdate();

sql=conn.prepareStatement("select * from tb_test");

rs=sql.executeQuery();

while(rs.next()) {

System.out.println("ID:"+rs.getInt(1)+" 姓名:"+rs.getString(2)+" QQ:"+rs.getString(3)+" province:"+rs.getString(4));

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

这个代码,我看了很久,没看出哪里有错,想也想不通............运行就出错

后来没办法了,跑去问群里的师兄。。。过了一会儿,答案来了,我的url多写了一个/, 实在是气人。。浪费了一个小时,删了/结果立马就对了。

这个程序里面,增删查改建表都打了注释的,如果要用哪一样,就把其他的注释掉,就OK了,不过感觉有点麻烦呢。还不如我刚刚写的statement简单,改一下sql语句,改一下主函数的内容,就搞定了。


关于师兄提的execute,executeQuery,executeUpdate的区别,这三个已经有了了解。1.execute用于执行返回多个结果集、多个更新计数或二者组合的语句,execute方法应该仅在语句能返回多个ResultSet对象、多个更新计数或ResultSet对象与更新计数的组合时使用。当执行某个已存储过程或动态执行未知 SQL 字符串(即应用程序程序员在编译时未知)时,有可能出现多个结果的情况,尽管这种情况很少见。2.executeQuery用于产生单个结果集的语句,这个方法被用来执行 SELECT 语句,它几乎是使用最多的 SQL 语句。3.executeUpdate用于执行 INSERT、UPDATE 或 DELETE 等sql语句,executeUpdate 的返回值是一个整数,指示受影响的行数。


明天计划的事情:

先了解一下Spring,任务1.17里面要求的JdbcTemplate是Spring提供的,这个得着手去学习,才能继续往下走。另外,有时间还是要强化练习statement和preparestatement。


遇到的问题:刚刚这个问题就很蛋疼了,我一个新手,程序结构是没有问题的,就是因为多了一个/倒是程序报错,但是我又检查不出来。以后可能要学学怎么debug,查看程序那里有问题。不然这种问题,简直要命。

Ps:sql语句到现在用的还不熟练。。。还要练习!


收获:收获其实不少,statement和preparestatement两种情况的数据库增删查改以及建表,都get了。

Tomorrow will be better!


返回列表 返回列表
评论

    分享到