JAVA学习笔记:JDBC

JDBC:

  • Java DataBase Connectivity
  • 一种用于执行SQL语句的Java API

API

  • Application Programming Interface
  • 一些预先定义的函数

代码模板

Class.forName("org.sqlite.JDBC");//加载驱动
String url="jdbc:sqlite:test.db";//用url来标识数据库
Connection conn=DriverManager.getConnection(url)//连接数据库
Statement stmt=conn.creatStatement();
ResultSet rs=stmt.execute("SELECT a,b,c FROM table1;");//执行sql语句并接收结果
while (rs.next()) {//解析结果
 int x = rs.getInt("a");
 String s = rs.getString("b");
 float f = rs.getFloat("c");
 }
 rs.close();//释放资源
 stmt.close();
 conn.close();

注意:

字符串 单引号

 public static void InsertData(Statement stmt, String name, String typeName, int ownerId, int storeId, double price) throws SQLException {
        StringBuffer sbSql = new StringBuffer(
                "insert into flower(name,typeName,owner_id,store_id,price) values ('");
        //TODO:1、根据函数参数,补全insert语句,并执行数据库插入操作,将这条数据插入到数据库表flower中。
        sbSql.append(name+"','");
        sbSql.append(typeName+"',");
        sbSql.append(ownerId+",");
        sbSql.append(storeId+",");
        sbSql.append(price+")");
        System.out.println(sbSql.toString());
        stmt.execute(sbSql.toString());
    }

name是一个字符串,insert时应该加上单引号:‘name’
否则报错:

[SQLITE_ERROR] SQL error or missing database (no such column: XXXXX)

SQL列下标

    public static String QueryData(Statement stmt) throws SQLException {
        //TODO: 1、请写出从鲜花表flower里查询所有鲜花信息的sql语句
        ResultSet rs =stmt.executeQuery("select * from flower");
        System.out.println("\t\t鲜花信息列表");
        System.out.println("编号\t鲜花名称\t鲜花类型 \t顾客编号\t商店编号\t价格");
        //TODO:2、从数据库中获取的所有鲜花信息,依次连接
        StringBuilder strResult = new StringBuilder();
        while (rs != null && rs.next()) {

            strResult.append(rs.getString(1)).append("\t");
            strResult.append(rs.getString(2)).append("\t");
            strResult.append(rs.getString(3)).append("\t");
            strResult.append(rs.getString(4)).append("\t");
            strResult.append(rs.getString(5)).append("\n");
        }
        /*
        经过上述while循环之后,strResult的形式如下所示。
        1	杜鹃花	香槟玫瑰	1	2	123
        2	郁金香瓶花	郁金香	2	1	489
        3	最美的时光	白玫瑰	0	2	200
        ………………………………
         */
        System.out.println(strResult.toString());

        if (rs != null) {
            rs.close();
        }
        return strResult.toString();
    }

列下标从1开始不然报错:

java.sql.SQLException: column 0 out of bounds 

getString()与getInt()

某一行的莫字段属性为NULL
getString() 返回NULL
getInt()返回0
getString与getInt均是将某一行的某一字段解析为对应格式

PreparedStatement

防止sql注入

 String sql = "update flower set owner_id=? ,store_id=? where id=?";
 PreparedStatement pstmt = conn.prepareStatement(sql);
            pstmt.setInt(1, p_owner_id);
            pstmt.setInt(2, p_store_id);
            pstmt.setInt(3, p_id);
 pstmt.execute();//执行sql语句
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值