首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

数据库连接有关问题,哪位大哥给小弟看看

2012-01-12 
数据库连接问题,哪位大哥给小弟看看.packagepakejiaoyiimportjavax.servlet.*importjavax.servlet.http.

数据库连接问题,哪位大哥给小弟看看.
package   pakejiaoyi;

import   javax.servlet.*;
import   javax.servlet.http.*;
import   java.io.*;
import   java.util.*;
import   java.sql.*;

public   class   Servlet2   extends   HttpServlet   {
        private   static   final   String   CONTENT_TYPE   =   "text/html;   charset=GBK ";

        //Initialize   global   variables
        public   void   init()   throws   ServletException   {
        }

        //Process   the   HTTP   Get   request
        public   void   doGet(HttpServletRequest   request,   HttpServletResponse   response)   throws
                        ServletException,   IOException   {
                response.setContentType(CONTENT_TYPE);
                PrintWriter   out   =   response.getWriter();
                String   name=request.getParameter( "name ");//获取用户名
                String     num=request.getParameter( "text1 ");//获取购买书籍的数量              
               
                try   {
                        Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver ");
                }   catch   (ClassNotFoundException   ex)   {
                        out.println( "加载错误 ");
                       
                }
                String   url= "jdbc:odbc:text ";
                String   ursename= "sa ";
                String   paw= " ";
                Connection   con=null;
                Statement   s=null;
                PreparedStatement   st=null;
                ResultSet   rs=null;
                           
                                try   {
                                        con   =   DriverManager.getConnection(url,   ursename,   paw);
                                        //取消自动提交
                                        con.setAutoCommit(false);


                                        s=con.createStatement();
                                        //获取ID为1的书籍
                                        rs=s.executeQuery( "select*from   book   where   id= '1 ' ");
                                        rs.next();
                                        //获取该书籍的库存数量
                                        int   number=rs.getInt(3);
                                        //获取该书籍的金额
                                        float   manei=rs.getFloat(4);
                                        //将用户填写书籍数量转换为整型
                                        int   num1=Integer.parseInt(num);
                                        //判断库存书籍数量是否大于用户购买数量
                                        if(number> =num1){
                                                //如果是更新数据库书籍数量
                                                st=con.prepareStatement( "update   book   set   booknum=?   where   id=3 ");
                                                st.setInt(1,number-num1);
                                                st.executeUpdate();
                                        }
                                        else
                                        {
                                                //如果库存书籍数量小于用户购买数量,提示库存不足
                                                out.println( "你所购的图书数量不足! ");


                                                return;
                                        }
                                        //获取用户余额
                                        st=con.prepareStatement( "select   jine   from   name1   where   username=? ");
                                        st.setString(1,name);
                                        st.executeQuery();
                                     
                                        rs.next();
                                        out.println( "0 ");
                                        float   namejin=rs.getFloat(1);//得到用户的余额,这句有错,后面的2输不出来
                                          out.println( "2 ");
                                        float   zong=manei*num1;//得数书籍的总金额
                                        out.println( "1 ");
                                        //判断用户金额是否大于购书的总金额
                                        if(namejin> =zong){
                                                //如果是更新数据库
                                                st=con.prepareStatement( "update   name1   set   jine=?   where   name=? ");
                                                out.println( "word ");
                                                st.setFloat(1,namejin-zong);
                                                st.setString(2,name);


                                                st.executeQuery();
                                                  out.println( "hello ");
                                               
                                        }
                                        else
                                        {
                                                //否则调用rollback()自动回滚,提示金额不足,
                                                con.rollback();
                                                out.println( "您的金额不足 ");
                                                return;
                                        }
                                        //如果更新数据库成功,调用commit()方法提交
                                        con.commit();
                                        out.println( "交易成功 ");
                                       
                                }   catch   (SQLException   ex1)   {
                                        out.println( "连接错误 ");
                                        try   {
                                                //如果发生异常,自动回滚
                                                con.rollback();
                                        }   catch   (SQLException   ex2)   {


                                        }
                                }
                       
        }

        //Process   the   HTTP   Post   request
        public   void   doPost(HttpServletRequest   request,   HttpServletResponse   response)   throws
                        ServletException,   IOException   {
                doGet(request,   response);
        }

        //Clean   up   resources
        public   void   destroy()   {
        }
}



[解决办法]
1.你的程序写的太乱了,
2,你能不能把显示的错误发出来
3,我的猜测是有可能rs那儿出错了,因为在一个连接通道里,只能有一个rs可以使用,而你先前用了一次rs 而后再用,可能是取出的数据没有把以前的数据给复盖掉,
4,另一个猜测是,你的rs是不是少了循环啊,

[解决办法]
rs=s.executeQuery( "select*from book where id= '1 ' ");
rs.next();
//获取该书籍的库存数量
int number=rs.getInt(3);
//获取该书籍的金额
float manei=rs.getFloat(4);
//将用户填写书籍数量转换为整型
int num1=Integer.parseInt(num);
//判断库存书籍数量是否大于用户购买数量
if(number> =num1){
//如果是更新数据库书籍数量
st=con.prepareStatement( "update book set booknum=? where id=3 ");


你怎么查找id=1的 更新id=3的
[解决办法]
楼主的rs=s.executeQuery( "select*from book where id= '1 ' ");中
select和*和from应该有空格吧 不知道是不是笔误
支持dr_lou()的观点
[解决办法]
st=con.prepareStatement( "select jine from name1 where username=? ");
st.setString(1,name);
st.executeQuery(); // 改成:ResultSet newRs = st.executeQuery();

rs.next(); // 这边的rs仍然是你上面所获得的id 为1的rs.
// 改成 newRs,next();
out.println( "0 ");
float namejin=rs.getFloat(1);//得到用户的余额,这句有错,后面的2输不出来 // float namejin=newRs.getFloat(1);
out.println( "2 ");

------------------------------------
不知道是不是,你的代码有点看不明白。好乱

[解决办法]
xwt630() ( ) 信誉:100 Blog 2007-2-5 19:48:38 得分: 0



1.你的程序写的太乱了,
2,你能不能把显示的错误发出来
3,我的猜测是有可能rs那儿出错了,因为在一个连接通道里,只能有一个rs可以使用,而你先前用了一次rs 而后再用,可能是取出的数据没有把以前的数据给复盖掉,
4,另一个猜测是,你的rs是不是少了循环啊,

---------------------------------



热点排行