每次都是抛出失败, PreparedStatement 这句后面的不加就不会,很奇怪,用了Statement也一样错误
<body>
<form action="index.jsp" method="post">
<center>
<div align="center">
用户名:<input type="text" name="name">
</div>
<br>
<div align="center">
密码:<input type="text" name="psd">
</div>
<br>
<input type="submit" value="提交">
</center>
</form>
<%
String name=request.getParameter("name");
String age1=request.getParameter("age");
String user="sa";
String psd="4184085";
try
{
int age=Integer.parseInt(age1);
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databasename=Test", user, psd);
PreparedStatement psmtm=con.prepareStatement("insert into test(name,age)values('"+name+"','"+age+"'");
psmtm.setString(1,name);
psmtm.setInt(2,age);
psmtm.executeUpdate();
// stmt.executeUpdate(null);
}catch(Exception e){
out.println("失败");
} %>
</body>
<body>
<form action="index.jsp" method="post">
<center>
<div align="center">
用户名:<input type="text" name="name">
</div>
<br>
<div align="center">
密码:<input type="text" name="psd">
</div>
<br>
<input type="submit" value="提交">
</center>
</form>
<%
String name=request.getParameter("name");
String age1=request.getParameter("age");
String user="sa";
String psd="4184085";
try
{
int age=Integer.parseInt(age1);
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databasename=Test", user, psd);
PreparedStatement psmtm=con.prepareStatement("insert into test(name,age)values('"+name+"','"+age+"'");
psmtm.setString(1,name);
psmtm.setInt(2,age);
psmtm.executeUpdate();
// stmt.executeUpdate(null);
}catch(Exception e){
out.println("失败");
} %>
</body>
报什么错误?
确定name,age都正确得到值 断点看一下
psmtm.setString(1,name);
psmtm.setInt(2,age);
你在PreparedStatement里已经是一条完整的SQL了
干嘛还要调用set方法,你这不是多余吗?
你把SQL改成insert into test(name,age) values(?,?);
这样就可以了,加个finally{}把psmtm、conn都关了
PreparedStatement是预编译,所以要用?来代替,然后在调用set来给每个?设置
Statement没有预编译,所以不能使用?,那么就必须像你的写法!
查帮助,好好了解下这两个类!
system.out.println("");打印出看看结果到数据库中看看能不能显示结果...
此时:String name=request.getParameter("name");
String age1=request.getParameter("age");的值是 null,一定会报错的。