1、使用下面Connection 的哪个方法可以建立一个PreparedStatement对象()
○A. createPrepareStatement()
○B. prepareStatement() // 这是建立对象,例如 PreparedStatement pstat = conn.prepareStatement(sql)
○C. createPreparedStatement()
●D. preparedStatement() // 这是对象的类型
回答错误(+0分)
正确答案:
B. prepareStatement()
2.有一个变量name=”杰克”,以下哪个sql无法达到预期查询效果() 分值5分
○A. “SELECT FROM EMP WHERE ENAME = ?” ;
○B. “SELECT FROM EMP WHERE ENAME = ”+name+” ;
// sql 对于mysql来讲本身就是一个字符串,而这个字段里面有三个 双引号,就多余了一个就会报错。
●C. “SELECT FROM EMP WHERE ENAME = ‘”+name+”’”;
○D. “SELECT FROM EMP WHERE ENAME = ‘杰克’ “ ;
回答错误(+0分)
正确答案:
B. “SELECT FROM EMP WHERE ENAME = ”+name+” ;
3. 已知对象数据student 包含3个属性(sno,sname,sex)编写sql代码和jdbc代码,将对象中的数据存储到同名表的同名字段中。使用Statement对象执行sql 分值5分
String className = “com.mysql.jdbc.Driver”;String url = “jdbc:mysql://localhost:3306/student”;String user = “root”;String password = “0000”;Class.forName(className);Connection conn = DriverManager.getConnection(url,user,password);Statement stat = conn.createStatement();String sql = “ insert into student(sno,sname,sex) values(‘“+student.getSno+”‘,’”+studnet.getSname+”‘,’”+student.getSex+”‘)”;ResultSet rs = stat.executeQuery(sql);
需要人工判分(待判分)
答案解析:
String sql = “insert into student(sno,sname,sex) “+values(”+student.getSno()+”,’”+student.getSname()+”’,’”+student.getSex()+”’)”;try{Connection conn = DriverManager.getConnection(“jdbc:mysql:///test?characterEncoding=utf8”,”root”,”root”);Statement stmt = conn.createStatement();stmt.executeUpdate(sql);stmt.close()conn.close();}catch(Exception e){e.printStackTrace()}
// JDBC连接msyql时,增删改查用 executeUpdate(sql),并且要注意是否有异常有则抛出异常。
4.已知STUDENT表有3个字段(SNO,SNAME,SEX), java中定义了条件变量sex编写sql代码和jdbc代码,将表中与sex变量相同的数据全部取出,并输出在控制台。使用PreparedStatement对象执行sql 分值5分
String className = “com.mysql.jdbc.Driver”String url = “jdbc:mysql://localhost:3306/student”;String user = “root”;String password = “0000”;Class.forName(className);Connection conn = DriverManager.getConnection(url,user,password);String sql = “select from student where sex = ?”;PreparedStatement pstat = conn.prepareStatement(sql);pstat.setString(1,sex);ResultSet rs = pstat.executeQuery();if(rs.next()){System.out.println(rs.getString(“SNO”));System.out.println(rs.getString(“SNAME”));System.out.println(rs.getString(“SEX”))}
需要人工判分(待判分)
答案解析:
String sql = “select sno,sname,sex from student where sex = ?” ;try{Connection conn = DriverManager.getConnection(“jdbc:mysql:///test?characterEncoding=utf8”,”root”,”root”);PreparedStatement stmt = conn.prepareStatement(sql);stmt.setString(1,sex);ResultSet rs = stmt.executeQuery();while(rs.next){System.out.print(rs.getInt(“sno”)+”,”);System.out.print(rs.getString(“sname”)+”,”);System.out.print(rs.getString(“sex”));System.out.println();}rs.close();stmt.close();conn.close();}catch(Excepiton e){e.printStackTrace()}
// 创建了对象,有的对象用了需要关闭 close()。异常有异常要抛出异常。
5.已知STUDENT表有3个字段(SNO,SNAME,SEX) 其中SNO PRIMARY KEY AUTO_INCREMENT已知待执行sql=”INSERT INTO STUDENT(SNAME,SEX) VALUES(‘zzt’,’male’)” ;编写statement部分代码执行sql,并获得数据库表中自动生成的主键值 分值5分
ResultSet rs = stat.getGeneratedKeys();if (rs.next()){id = rs.getInt(1);}
需要人工判分(待判分)
答案解析:
try{Connection conn = DriverManager.getConnection(“jdbc:mysql:///test?characterEncoding=utf8”,”root”,”root”);PreparedStatement stmt = conn.prepareStatement(sql);stmt.executeUpdate();ResultSet rs = stmt.getGeneratedKeys ();while(rs.next){int sno = rs.getInt(1) ;}rs.close();stmt.close();conn.close();}catch(Excepiton e){e.printStackTrace()}
// 创建了对象,有的对象用了需要关闭 close()。异常有异常要抛出异常。
==============================错题总结======================
1.PreparedStatement 和 prepareStatement是有区别的,两个单词一眼看着是一样的,但前面PreparedStatement多了个d,就多了个d两个作用就不一样。这里就说明了以后看题要仔细仔细仔细。
2.在JDBC中创建了对象资源,使用后就要关闭close()。
3.JDBC中会发生很多异常,有的话,就要抛出异常