在java中,变量在全局可以不赋值,因为有默认值,在局部不可以不赋值,因为没有默认值,但是你看下面这个
publicclassFFFextendsHttpServlet{ privatestaticfinallongserialVersio...
public class FFF extends HttpServlet { private static final long serialVersionUID = 1L; public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=master"; String userName = "sa"; String userPwd = "fudewei1"; String sql="insert into book values(?,?,?,?)"; //就是这dbConn,局部变量这没赋值 Connection dbConn; try { Class.forName(driverName);//这dbConn,已赋值, dbConn = DriverManager.getConnection(dbURL, userName, userPwd); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } response.setContentType("text/html"); PrintWriter out = response.getWriter(); request.setCharacterEncoding("utf-8"); String id=request.getParameter("id"); String bookname=request.getParameter("bookname"); String author=request.getParameter("author"); String price=request.getParameter("price"); PreparedStatement st; try {//已赋值引用出现错误(开发工具发现的) st = dbConn.prepareStatement(sql); st.setString(1,id); st.setString(2, bookname); st.setString(3, author); st.setString(4,price ); st.executeUpdate(); st.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); out.print(" This is "); out.print(this.getClass()); out.println(", using the POST method"); out.println(" </BODY>"); out.println("</HTML>"); out.flush(); out.close(); }}
展开
展开全部
你在try里面赋值的,编译器这样去考虑的:
如果在
class.forname(drivername);
出现异常,直接到catch语句
然后,
dbconn
=
drivermanager.getconnection(dburl,
username,
userpwd);
不能执行,也就是不能赋值,也就是有可能dbconn是没有赋值的情况
这时候,编译器当然不允许
st
=
dbconn.preparestatement(sql);
如果在
class.forname(drivername);
出现异常,直接到catch语句
然后,
dbconn
=
drivermanager.getconnection(dburl,
username,
userpwd);
不能执行,也就是不能赋值,也就是有可能dbconn是没有赋值的情况
这时候,编译器当然不允许
st
=
dbconn.preparestatement(sql);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
dbConn = DriverManager.getConnection(dbURL, userName, userPwd); 这不是赋值吗?就在下面一行赋值都没看到?
int i;
i= 0;这就是赋值,和int i= 0 ;是一样的意思。你以为什么叫赋值呢
局部变量也就是用到的时候,比如被别人引用的时候才需要赋值。没引用就是垃圾代码,管你赋值不赋值呢
int i;
i= 0;这就是赋值,和int i= 0 ;是一样的意思。你以为什么叫赋值呢
局部变量也就是用到的时候,比如被别人引用的时候才需要赋值。没引用就是垃圾代码,管你赋值不赋值呢
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-09-24
展开全部
给个初始值 就行了
Connection conn=null;不过 一般写Connection dbConn; 这个都把它放外面,且把null赋给它,这样规范点。
Connection conn=null;不过 一般写Connection dbConn; 这个都把它放外面,且把null赋给它,这样规范点。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
...你以为几个人有耐心看你的代码...拜托整理的工整好不好
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询