把用户注册的信息写入Mysql数据库的问题
我做了一个注册会员的JSP网页(tomcat+Mysql),在用户提交信息后,我想让把它写入数据库,在这里为了简化问题,我假设这个表只有三个字段:id(用来唯一标识用户名),name,pwd. `id` int(11) NOT NULL auto_increment,`name` varchar(20) default NULL, `pwd` varchar(20)default NULL,PRIMARY KEY (`id`)
我已做过测试,tomcat已连上了Mysql数据库.我的设计是假如id为0(即第一注册者遇到的情况,就设其id为1,以后每个的注册者id加1.还有请问实际做成网站,下面的代码中的host中的localhost是不是应该改为我机子的IP?
<%@ page contentType= "text/html;charset=gb2312 "%>
<%@ page import= "java.sql.* " %>
<html>
<%!
public String decodeCode(String s){
try{
if (s == null) return null;
else return new String(s.getBytes( "gb2312 "), "iso-8859-1 ");
}
catch(Exception e){ }
return null;
}
%>
<%
try{
String name=request.getParameter( "name ");
String pwd=request.getParameter( "pwd ");
String host= "localhost ";
String user= "root ";
String pw= "11111 ";
String db= "myweb ";
String tab= "user ";
Class.forName( "com.mysql.jdbc.Driver ").newInstance();
String url= "jdbc:mysql:// "+host+ "/ "+db;
Connection con=DriverManager.getConnection(url,user,pw);
Statement st=con.createStatement();
ResultSet rs=st.executeQuery(tab);
rs.last();
if(rs.wasNull()){
String sql= "INSERT INTO "+tab+ "VALUES(1,` "+decodeCode(name)+ "`,` "+decodeCode(pwd)+ "`) ";
st.executeUpdate(sql);
st.close();
con.close();
}
else{
int i=rs.getInt( "id ");
String sql= "INSERT INTO "+tab+ "VALUES( "+(i+1)+ ",` "+decodeCode(name)+ "`,` "+decodeCode(pwd)+ "`) ";
st.executeUpdate(sql);
st.close();
con.close();
}
}
%>
<%}catch(Exception e){out.println( "数据库连接不成功 ");}%>
<h1> 注册成功,已写入数据库 </h1>
</body>
</html>
[解决办法]
先说一下你的mysql驱动,我不知道你用的是不是合法的jdbc驱动,我连mysql都是用org.gjt.mm.mysql.Driver,还有tab这个变量是指什么呢?怎么不是条sql语句?对于statement不是很清楚,从来都是用preparestatment的,还有,你这明显是编译错误,只会是你的程序的问题
[解决办法]
String url= "jdbc:mysql:// "+host+ "/ "+db?user&pw;
你的语句都不能连接到数据库的
[解决办法]
String sql= "INSERT INTO login VALUES(1, 'jrs05 ', '666 ',1, 'jrs05@163.com ', '我是谁 ', 'qqqqqq ') "后少了分号