有哪位大神 能帮我设计个程序 或者告诉我有什么可行的方法,就是我做一个登录注册网站 用到了jdbc 数据库 但是我想设计个账户不能重复 ,却设计不出来

qq_41209578 2017-11-30 09:04:52
<%
request.setCharacterEncoding("UTF-8");//设置request域的字符编码
String userpassword = request.getParameter("userpassword");
String userid = request.getParameter("userid");
String gname = request.getParameter("gname");
String email = request.getParameter("email");
int age = Integer.parseInt(request.getParameter("age"));//从request域中提取值
String hobby = request.getParameter("hobby");
String gender = request.getParameter("gender");
String city = request.getParameter("city");
String characteristic = request.getParameter("characteristic");
/*连接的准备*/
String url = "jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8";//数据库连接地址 注意插入乱码!
String JDBCname = "root";//数据库用户名
String JDBCpassword = "123456";//数据库密码
Class.forName("com.mysql.jdbc.Driver");//注册连接到MySQL的驱动 就像在两个岛之间造桥 有了桥才能交流(提交sql语句和接收数据)
Connection conn = null;//连接类
PreparedStatement pstmt = null;//预处理类 Statement类

/*操作数据库*/

try {
conn = DriverManager.getConnection(url, JDBCname, JDBCpassword);
String sql = "insert into user (gname,userid,userpassword,email,age,hobby,gender,city, characteristic) values (?,?,?,?,?,?,?,?,?)";
pstmt = conn.prepareStatement(sql);//使用预处理连接 注意顺序!
pstmt.setString(1, gname);//表示设置sql语句的参数 对应占位符 1代表的一个问号
pstmt.setString(2, userid);
pstmt.setString(3, userpassword);
pstmt.setString(4, email);
pstmt.setInt(5, age);
pstmt.setString(6, hobby);
pstmt.setString(7, gender);
pstmt.setString(8, city);
pstmt.setString(9, characteristic);

int i = pstmt.executeUpdate();//预处理提交
if (i > 0) {
out.print("注册成功!3秒后回到主页面");
response.setHeader("refresh", "3;url=face.jsp");}//设置头信息跳转
}
catch (Exception e) {
out.println("添加失败,错误:" + e.getMessage());//方法一,输出错误的信息
e.printStackTrace();//方法二,输出 错误的信息
out.println("添加失败!3秒后回到show页面");
response.setHeader("refresh", "3;url=face.jsp");
} finally {
if (pstmt != null) {
pstmt.close();//关闭资源
}
if (conn != null)
conn.close();//关闭资源 注意需要按顺序关闭 顺序与你创建对象时的顺序相反 最后创建对象的最先关闭
}


%>


------------------------------------------------------这一块是我所设计的源代码 知识把从上一个注册表格中将信息传入到jdbc 数据库 而没有检查账户是否功能 也就是同一个账号 可以申请两次 这有悖设计思路 所以我想设计一个在将信息存入jdbc中 做个检查 如果数据库中没有这账号者 存入 若有者弹回注册网页 但我所设计的方法涵盖两个sql语句 而我在这一方面又是个新手 希望哪个大神给点意见
...全文
292 6 点赞 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
大概就是这样。有错误看着改

Connection conn = null;// 连接类
		PreparedStatement pstmt = null;// 预处理类 Statement类
		PreparedStatement pst = null;
		try {
			conn = DriverManager.getConnection(url, JDBCname, JDBCpassword);
			String countSql = "select count(*) count from user where gname=?";
			pst = conn.prepareStatement(sql);
			pst.setString(1, gname);
			ResultSet countSet = stmt.executeQuery(countSql);
			int count = 0;
			if (countSet.next()) {
				rowCount = countSet.getInt("count");
			}
			if (count > 0) {
				response.sendRedirect("login.jsp?errNo=1");
			} else {
				String sql = "insert into user (gname,userid,userpassword,email,age,hobby,gender,city, characteristic) values (?,?,?,?,?,?,?,?,?)";
				pstmt = conn.prepareStatement(sql);// 使用预处理连接 注意顺序!
				pstmt.setString(1, gname);// 表示设置sql语句的参数 对应占位符 1代表的一个问号
				pstmt.setString(2, userid);
				pstmt.setString(3, userpassword);
				pstmt.setString(4, email);
				pstmt.setInt(5, age);
				pstmt.setString(6, hobby);
				pstmt.setString(7, gender);
				pstmt.setString(8, city);
				pstmt.setString(9, characteristic);

				int i = pstmt.executeUpdate();// 预处理提交
				if (i > 0) {
					out.print("注册成功!3秒后回到主页面");
					response.setHeader("refresh", "3;url=face.jsp");
				}// 设置头信息跳转
			}
		} catch (Exception e) {
			out.println("添加失败,错误:" + e.getMessage());// 方法一,输出错误的信息
			e.printStackTrace();// 方法二,输出 错误的信息
			out.println("添加失败!3秒后回到show页面");
			response.setHeader("refresh", "3;url=face.jsp");
		} finally {
			if (pst != null) {
				pst.close();// 关闭资源
			}
			if (pstmt != null) {
				pstmt.close();// 关闭资源
			}
			if (conn != null)
				conn.close();// 关闭资源 注意需要按顺序关闭 顺序与你创建对象时的顺序相反 最后创建对象的最先关闭
		}
	}
  • 打赏
  • 举报
回复
自由自在_Yu 2017-11-30
insert一条数据之前先查询一下这个账号是否已经申请了 select * from user where userid ='申请的账号' 如果能查到,就说明已经申请过了,提示“账号已存在”,就不要执行insert了
  • 打赏
  • 举报
回复
qq_41209578 2017-11-30
是这个意思 但哪里出错了
  • 打赏
  • 举报
回复
wbc_18989265729 2017-11-30
注册账户,输入用户名完成,也就是输入框blur事件的时候,就异步去数据库里查找是否有这个账户了,如果有这个账户,前台直接提示用户名已经存在,请重新输入
  • 打赏
  • 举报
回复
qq_41209578 2017-11-30

<%
request.setCharacterEncoding("UTF-8");//设置request域的字符编码
String userpassword = request.getParameter("userpassword");
String userid = request.getParameter("userid");
String gname = request.getParameter("gname");
String email = request.getParameter("email");
int age = Integer.parseInt(request.getParameter("age"));//从request域中提取值
String hobby = request.getParameter("hobby");
String gender = request.getParameter("gender");
String city = request.getParameter("city");
String characteristic = request.getParameter("characteristic");
/*连接的准备*/
String url = "jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8";//数据库连接地址 注意插入乱码!
String JDBCname = "root";//数据库用户名
String JDBCpassword = "123456";//数据库密码
Class.forName("com.mysql.jdbc.Driver");//注册连接到MySQL的驱动 就像在两个岛之间造桥 有了桥才能交流(提交sql语句和接收数据)
Connection conn = null;//连接类
PreparedStatement pstmt = null;//预处理类 Statement类
PreparedStatement pst = null;
try {
conn = DriverManager.getConnection(url, JDBCname, JDBCpassword);
String countSql = "select count(*) count from user where gname=?";
pst = conn.prepareStatement(sql);
pst.setString(1, gname);
ResultSet countSet = stmt.executeQuery(countSql);
int count = 0;
if (countSet.next()) {
rowCount = countSet.getInt("count");
}
if (count > 0) {
response.sendRedirect("login.jsp?errNo=1");
} else {
String sql = "insert into user (gname,userid,userpassword,email,age,hobby,gender,city, characteristic) values (?,?,?,?,?,?,?,?,?)";
pstmt = conn.prepareStatement(sql);// 使用预处理连接 注意顺序!
pstmt.setString(1, gname);// 表示设置sql语句的参数 对应占位符 1代表的一个问号
pstmt.setString(2, userid);
pstmt.setString(3, userpassword);
pstmt.setString(4, email);
pstmt.setInt(5, age);
pstmt.setString(6, hobby);
pstmt.setString(7, gender);
pstmt.setString(8, city);
pstmt.setString(9, characteristic);

int i = pstmt.executeUpdate();// 预处理提交
if (i > 0) {
out.print("注册成功!3秒后回到主页面");
response.setHeader("refresh", "3;url=face.jsp");
}// 设置头信息跳转
}
} catch (Exception e) {
out.println("添加失败,错误:" + e.getMessage());// 方法一,输出错误的信息
e.printStackTrace();// 方法二,输出 错误的信息
out.println("添加失败!3秒后回到show页面");
response.setHeader("refresh", "3;url=face.jsp");
} finally {
if (pst != null) {
pst.close();// 关闭资源
}
if (pstmt != null) {
pstmt.close();// 关闭资源
}
if (conn != null)
conn.close();// 关闭资源 注意需要按顺序关闭 顺序与你创建对象时的顺序相反 最后创建对象的最先关闭
}
}

  • 打赏
  • 举报
回复
qq_41209578 2017-11-30
好的 我试试
  • 打赏
  • 举报
回复
相关推荐
发帖
Eclipse
加入

5.8w+

社区成员

Java Eclipse
申请成为版主
帖子事件
创建了帖子
2017-11-30 09:04
社区公告
暂无公告