以下是本人自己做的一个小例子 因为是刚刚学习 所以有些异常找不到 下面的异常是SQLException:oracle:000913:值过多
我在数据库中建的表跟UserName,Pwd,Email,RealName,Gender,Question,Answer,Phone,MyPage,Selfintro,Hobbies完全一样 不知道该怎么办了
我的目的是要把注册页面的信息存到数据库中 连接数据库都已经完成了 就是存不进去 写不到表里去 望好心人帮个忙吧 package ch14.JavaBean;import java.sql.*;
import java.sql.SQLException;public class DB_User {
//创建公共数据库连接对象
DB_Conn db_conn = new DB_Conn();
//-------------------------------添加注册用户---------------------
public int add(User user)
{
db_conn.ConnectDB();
try{
String sql = "insert into userinfo(UserName,Pwd,Email,RealName,Gender,Question,Answer,Phone,MyPage,Selfintro,Hobbies) values('"
+user.getUsername()+"','"+user.getPassword()+"','"+user.getEmail()
+"','"+user.getRealname()+"','"+user.getGender()
+"','"+user.getQuestion()+"','"+user.getAnswer()
+"','"+user.getPhone()
+"','"+user.getPage()+"','"+user.getSelfintro()
+"','"+user.getHobby()+"')";
System.out.println(sql);
sql = new String(sql.getBytes("ISO8859-1"),"GB2312");
System.out.print(sql);
int i = db_conn.sm.executeUpdate(sql);
return i;
}
catch(SQLException SqlE)
{
SqlE.printStackTrace();
return -1;
}
catch(Exception E){
E.printStackTrace();
return -2;
}
finally{
//关闭连接,释放数据库资源
db_conn.CloseDB();
}
}
//----------------------------------修改用户信息函数----------------------------
public int update(User user){
db_conn.ConnectDB();
try{
String sql = "update userinfo set UserName='"
+user.getUsername() + "',Pwd='"
+user.getPassword() + "',Email='"
+user.getRealname() + "',Gender='"
+user.getGender() + "',Question='"
+user.getQuestion() + "',Answer='"
+user.getAnswer() + "',Phone='"
+user.getPhone() + "',MyPage='"
+user.getPage() + "',Hobbies='"
+user.getHobby() + "',Selfintro='"
+user.getSelfintro()+ "' where id ='"
+user.getId() + "'";
//System.out.println(sql);
sql=new String(sql.getBytes("ISO8859-1"),"GB2312");
//System.out.println(sql);
int i = db_conn.sm.executeUpdate(sql);//执行sql语句
return -1;
}
catch(Exception E){
E.printStackTrace();
return -2;
}
finally{
//关闭连接
db_conn.CloseDB();
}
}//----------------------------------删除用户信息函数----------------------------
public int delete(int id)
{
db_conn.ConnectDB();
try
{
String sql = "delete from userinfo where id = '"+id+"'";
int i = db_conn.sm.executeUpdate(sql);//执行sql语句
return i;
}
catch(SQLException SqlE)
{
SqlE.printStackTrace();
return -1;
}
catch(Exception E)
{
E.printStackTrace();
return -2;
}
finally
{
//关闭连接,释放数据库资源
db_conn.CloseDB();
}
}
//----------------------------------通过用户名和密码获取用户信息函数------------------
public User get(String username, String password)
{
db_conn.ConnectDB();
ResultSet rs = null;
try
{
//sql查询
String sql = "select * from userinfo where UserName = '"+ username + "' and Pwd='" + password + "'";
//执行SQL语句
rs = db_conn.sm.executeQuery(sql);
//System.out.println(sql)
User user = null;
if(rs.next())
{
user = new User();
user.setId(rs.getInt("id"));
user.setUsername(username);
user.setPassword(rs.getString("Pwd"));
user.setEmail("Email");
user.setRealname(rs.getString("Realname"));
user.setGender(rs.getInt("Gende"));
user.setQuestion(rs.getString("Question"));
user.setAnswer(rs.getString("Answer"));
user.setPhone(rs.getString("Phone"));
user.setPage(rs.getString("MyPage"));
user.setHobbies(rs.getString("Hobbies"));
user.setSelfintro(rs.getString("Selfintro"));
return user;
}
return user;
}
catch(SQLException SqlE)
{
SqlE.printStackTrace();
return null;
}
catch(Exception E)
{
E.printStackTrace();
return null;
}
finally
{
//关闭连接,释放数据库资源
db_conn.CloseDB();
}
}
//----------------------------------找回用户名密码函数-----------------------------
public String getPassword(String username, String question,String answer)
{
db_conn.ConnectDB();
ResultSet rs = null;
try
{
//sql语句
String sql = "select Pwd from userinfo where username = '"
+ username +"' and question= '" + question +
"' and anwser='" + answer + "'";
//执行SQL语句
rs = db_conn.sm.executeQuery(sql);
if(rs.next())
{
return rs.getString("Pwd");
}
return null;
}
catch(SQLException SqlE)
{
SqlE.printStackTrace();
return null;
}
catch(Exception E)
{
E.printStackTrace();
return null;
}
finally
{
//关闭连接
db_conn.CloseDB();
}
}
//----------------------------------判断用户是否存在函数----------------------------
public int getCount() throws Exception
{
db_conn.ConnectDB();
ResultSet rs = null;
try
{
String sql = "select count(id) from userinfo";
rs = db_conn.sm.executeQuery(sql);//执行SQL语句
if(rs.next())
{
return rs.getInt(1);
}
return 0;
}
catch(Exception SqlE)
{
SqlE.printStackTrace();
return 0;
}
finally {
// 关闭连接,释放数据库资源:
db_conn.CloseDB();
}
}
}
我在数据库中建的表跟UserName,Pwd,Email,RealName,Gender,Question,Answer,Phone,MyPage,Selfintro,Hobbies完全一样 不知道该怎么办了
我的目的是要把注册页面的信息存到数据库中 连接数据库都已经完成了 就是存不进去 写不到表里去 望好心人帮个忙吧 package ch14.JavaBean;import java.sql.*;
import java.sql.SQLException;public class DB_User {
//创建公共数据库连接对象
DB_Conn db_conn = new DB_Conn();
//-------------------------------添加注册用户---------------------
public int add(User user)
{
db_conn.ConnectDB();
try{
String sql = "insert into userinfo(UserName,Pwd,Email,RealName,Gender,Question,Answer,Phone,MyPage,Selfintro,Hobbies) values('"
+user.getUsername()+"','"+user.getPassword()+"','"+user.getEmail()
+"','"+user.getRealname()+"','"+user.getGender()
+"','"+user.getQuestion()+"','"+user.getAnswer()
+"','"+user.getPhone()
+"','"+user.getPage()+"','"+user.getSelfintro()
+"','"+user.getHobby()+"')";
System.out.println(sql);
sql = new String(sql.getBytes("ISO8859-1"),"GB2312");
System.out.print(sql);
int i = db_conn.sm.executeUpdate(sql);
return i;
}
catch(SQLException SqlE)
{
SqlE.printStackTrace();
return -1;
}
catch(Exception E){
E.printStackTrace();
return -2;
}
finally{
//关闭连接,释放数据库资源
db_conn.CloseDB();
}
}
//----------------------------------修改用户信息函数----------------------------
public int update(User user){
db_conn.ConnectDB();
try{
String sql = "update userinfo set UserName='"
+user.getUsername() + "',Pwd='"
+user.getPassword() + "',Email='"
+user.getRealname() + "',Gender='"
+user.getGender() + "',Question='"
+user.getQuestion() + "',Answer='"
+user.getAnswer() + "',Phone='"
+user.getPhone() + "',MyPage='"
+user.getPage() + "',Hobbies='"
+user.getHobby() + "',Selfintro='"
+user.getSelfintro()+ "' where id ='"
+user.getId() + "'";
//System.out.println(sql);
sql=new String(sql.getBytes("ISO8859-1"),"GB2312");
//System.out.println(sql);
int i = db_conn.sm.executeUpdate(sql);//执行sql语句
return -1;
}
catch(Exception E){
E.printStackTrace();
return -2;
}
finally{
//关闭连接
db_conn.CloseDB();
}
}//----------------------------------删除用户信息函数----------------------------
public int delete(int id)
{
db_conn.ConnectDB();
try
{
String sql = "delete from userinfo where id = '"+id+"'";
int i = db_conn.sm.executeUpdate(sql);//执行sql语句
return i;
}
catch(SQLException SqlE)
{
SqlE.printStackTrace();
return -1;
}
catch(Exception E)
{
E.printStackTrace();
return -2;
}
finally
{
//关闭连接,释放数据库资源
db_conn.CloseDB();
}
}
//----------------------------------通过用户名和密码获取用户信息函数------------------
public User get(String username, String password)
{
db_conn.ConnectDB();
ResultSet rs = null;
try
{
//sql查询
String sql = "select * from userinfo where UserName = '"+ username + "' and Pwd='" + password + "'";
//执行SQL语句
rs = db_conn.sm.executeQuery(sql);
//System.out.println(sql)
User user = null;
if(rs.next())
{
user = new User();
user.setId(rs.getInt("id"));
user.setUsername(username);
user.setPassword(rs.getString("Pwd"));
user.setEmail("Email");
user.setRealname(rs.getString("Realname"));
user.setGender(rs.getInt("Gende"));
user.setQuestion(rs.getString("Question"));
user.setAnswer(rs.getString("Answer"));
user.setPhone(rs.getString("Phone"));
user.setPage(rs.getString("MyPage"));
user.setHobbies(rs.getString("Hobbies"));
user.setSelfintro(rs.getString("Selfintro"));
return user;
}
return user;
}
catch(SQLException SqlE)
{
SqlE.printStackTrace();
return null;
}
catch(Exception E)
{
E.printStackTrace();
return null;
}
finally
{
//关闭连接,释放数据库资源
db_conn.CloseDB();
}
}
//----------------------------------找回用户名密码函数-----------------------------
public String getPassword(String username, String question,String answer)
{
db_conn.ConnectDB();
ResultSet rs = null;
try
{
//sql语句
String sql = "select Pwd from userinfo where username = '"
+ username +"' and question= '" + question +
"' and anwser='" + answer + "'";
//执行SQL语句
rs = db_conn.sm.executeQuery(sql);
if(rs.next())
{
return rs.getString("Pwd");
}
return null;
}
catch(SQLException SqlE)
{
SqlE.printStackTrace();
return null;
}
catch(Exception E)
{
E.printStackTrace();
return null;
}
finally
{
//关闭连接
db_conn.CloseDB();
}
}
//----------------------------------判断用户是否存在函数----------------------------
public int getCount() throws Exception
{
db_conn.ConnectDB();
ResultSet rs = null;
try
{
String sql = "select count(id) from userinfo";
rs = db_conn.sm.executeQuery(sql);//执行SQL语句
if(rs.next())
{
return rs.getInt(1);
}
return 0;
}
catch(Exception SqlE)
{
SqlE.printStackTrace();
return 0;
}
finally {
// 关闭连接,释放数据库资源:
db_conn.CloseDB();
}
}
}
public int getCount() throws Exception
{
db_conn.ConnectDB();
ResultSet rs = null;
try
{
String sql = "select count(id) from userinfo";
rs = db_conn.sm.executeQuery(sql);//执行SQL语句
if(rs.next())
{
return rs.getInt(1);
}
return 0;
}
catch(Exception SqlE)
{
SqlE.printStackTrace();
return 0;
}
finally {
// 关闭连接,释放数据库资源:
db_conn.CloseDB();
}
}
}SQL应该加个where条件吧,不然不是把所有用户都查出来了
+user.getUsername()+"','"+user.getPassword()+"','"+user.getEmail()
+"','"+user.getRealname()+"','"+user.getGender()
+"','"+user.getQuestion()+"','"+user.getAnswer()
+"','"+user.getPhone()
+"','"+user.getPage()+"','"+user.getSelfintro()
+"','"+user.getHobby()+"')"; userName,Pwd... 是String类型还是int类型的
如果是String类型的,就不需要''这个了,
sql = new String(sql.getBytes("ISO8859-1"),"GB2312");
中的ISO8859-1改成gb2312后能显示出来 但是这样自己填入的东西在数据库中就是????? 所以很郁闷 希望有高手帮忙指点下public class DB_User {
//创建公共数据库连接对象
DB_Conn db_conn = new DB_Conn();
//-------------------------------添加注册用户---------------------
public int add(User user)
{ db_conn.ConnectDB();
try{
String sql = "insert into userinfo(UserName,Pwd,Email,RealName,Gender,Question,Answer,Phone,MyPage,Selfintro,Hobbies) values('"
+user.getUsername()+"','"+user.getPassword()+"','"+user.getEmail()
+"','"+user.getRealname()+"','"+user.getGender()
+"','"+user.getQuestion()+"','"+user.getAnswer()
+"','"+user.getPhone()
+"','"+user.getPage()+"','"+user.getSelfintro()
+"','"+user.getHobby()+"')";
System.out.println(sql);
sql = new String(sql.getBytes("ISO8859-1"),"GB2312");
System.out.print(sql); int i = db_conn.sm.executeUpdate(sql);
return i;
}
catch(SQLException SqlE)
{
SqlE.printStackTrace();
return -1;
}
catch(Exception E){
E.printStackTrace();
return -2;
}
finally{
//关闭连接,释放数据库资源
db_conn.CloseDB();
}
}
<td align=right>兴趣爱好:</td>
<td><input type="checkbox" name="hobbies" value="1@"> 计算机编程
<input type="checkbox" name="hobbies" value="2@"> 阅读书籍
</td>
</tr>
这是JSP中的选项代码
public String getHobby() {
StringTokenizer st = new StringTokenizer(getHobbies(), "@");
StringBuffer sb = new StringBuffer();
while (st.hasMoreElements()) {
switch ((Integer.parseInt(st.nextElement().toString()))) {
case 1:
sb.append("计算机编程").toString();
break;
这是BEAN中的关于这段的代码
还有就是上面的方法操作的代码
请高手帮个忙 把乱码问题解决下 谢谢了
sql = new String(sql.getBytes("ISO-8859-1"),"gbk");这句话起了关键的作用 我发现经过这句话后 把我后面的hobby 值变成了乱码
这句话前面我在注册页面输入的是乱码 但是后面选的就不是 经过了后 后面选的就变成乱码了正好反过来了 求助怎么能让他们一致啊