JDBC实例 Statement,PreparedStatement,CallableStatement三个方法的实例

public void ListStudents() throws SQLException{ int i, NoofColumns; String StNo, StFName, StLName; //初始化并加载JDBC-ODBC驱动程序 Class.forName("jdbc.odbc.JdbcOdbcDriver"); //创建连接对象 Connection Ex1Con = DriverManager.getConnection("jdbc:odbc:StudentDB";uid="admin";pw="sa"); //创建一个简单的Statement对象 Statement Ex1Stmt = Ex1Con.createStatement(); //创建SQL串,传送到DBMS并执行SQL语句 ResultSet Ex1rs = Ex1Stmt.executeQuery("SELECT StudentID, FirstName, LastName FROM Students"); //处理每一个数据行,直到不再有数据行 System.out.println("Student Number First Name Last Name"); while(Ex1rs.next()){ //将列值保存到java变量中 StNo = Ex1rs.getString(1); StFName = Ex1rs.getString(2); StLName = Ex1rs.getString(3); System.out.println(StNo, StFName, StLName); } } public void UpdateStudentName(String StFName, String StLName, String StNo) throws SQLException, ClassNotFoundException { int RetValue; //初始化并加载JDBC-ODBC驱动程序 Class.forName("jdbc.odbc.JdbcOdbcDriver"); //创建连接对象 Connection Ex1Con = DriverManager.getConnection("jdbc:odbc:StudentDB";uid="admin";pw="sa"); //创建一个简单的Statement对象 Statement Ex1Stmt = Ex1Con.createStatement(); //创建SQL串,传送到DBMS并执行该SQL语句 String SQLBuffer = "UPDATE Students SET FirstName = " + StFName + ",LastName = " + StLName + "WHERE StudentNumber = " + StNo; RetValue = Ex1Stmt.executeUpdate(SQLBuffer); System.out.println("Updated" + RetValue + "rows in the Database."); } //使用PreparedStatement改进实例 //Declare class variables Connection Con; PreparedStatement PrepStmt; boolean Initialized = false; public void InitConnection() throws SQLException, ClassNotFoundException{ //Initialize and load the JDBC-ODBC driver. Class.forName("jdbc.odbc.JdbcOdbcDriver"); //Make the connection object. Con = DriverManager.getConnection("jdbc:odbc:StudentDB";uid="admin";pw="sa"); //Create a prepared Statement object. PrepStmt = Con.prepareStatement("SELECT ClassName, Location, DaysAndTimes FROM Classes WHERE ClassName = ?"); Initialized = true; } public void ListOneClass(String ListClassName) throws SQLException, ClassNotFoundException{ int i, NoOfColumns; String ClassName, ClassLocation, ClassSchedule; if(!Initialized){ InitConnection(); } //Set the SQL parameter to the one passed into this method PrepStmt.setString(1, ListClassName); ResultSet Ex1rs = PrepStmt.executeQuery(); //Process each row until there are no more rows and display the results on the console. System.out.println("Class Location Schedule"); while(Ex1rs.next()){ ClassName = Ex1rs.getString(1); ClassLocation = Ex1rs.getString(2); ClassSchedule = Ex1rs.getString(3); System.out.println(ClassName,ClassLocation,ClassSchedule); } } //使用CallableStatement显示成绩 //预先定义好的存储过程的调用形式为:studentGrade = getStudentGrade(StudentID, ClassID) public void DisplayGrade(String StudentID, String ClassID) throws SQLException { int Grade; //Initialize and load the JDBC-ODBC dirver. Class.forName("jdbc.odbc.JdbcOdbcDriver"); //Make the connection object; Connection Con = DriverManager.getConnection("jdbc:odbc:studentDB";uid="admin";pw="sa"); //Create a Callable Statement object; CallableStatement CStmt = Con.prepareCall({? = call getStudentGrade[?,?]}); //Now tie the placeholders with actual parameters. //Register the return value from the stored procedure //as an integer type so that the driver knows how to handle it. //Note the type is defined in the java.sql.Types. CStmt.registerOutParameter(1,java.sql.Types.INTEGER); //Set the In parameters (which are inherited from the PreparedStatement class) CStmt.setString(1,StudentID); CStmt.setString(2,ClassID); //Now we are ready to call the stored procedure int RetVal = CStmt.excuteUpdate(); //Get the OUT Parameter from the registered parameter //Note that we get the result from the CallableStatement object Grade = CStmt.getInt(1); //And display the results on the console; System.out.println("The Grade is:" + Grade); }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光义

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值