java连接oracle数据库,进行数据库信息的添加和查找比对
---------------------------------java以及数据库部分-------------------------------------
创建表:
create table jdbc (name varchar2(20),password number(20));
查看创建后的表结构:
desc jdbc;
(本文着重于jdbc,在建表上做了很大的精简。)
连接数据库的基本代码:
String sqlname=null;
String sqlpassword = null;
String sql;
String driver="Oracle.jdbc.driver.OracleDriver";
String url="jdbc:oracle:thin:@localhost:1521:orcl";
String user="system";
String pwd=[你的system用户的密码];
try{
//加载驱动
Class.forName(driver);
//创建链接
Connection con = DriverManager.getConnection(url,user,pwd);
//创建statement对象
Statement st = con.createStatement();
//cong获得结果集
st.executeUpdate(sql);
while(rs.next())
{
sqlname=rs.getString("name");
sqlpassword = rs.getSting("password");
}
}catch(Exception e){}
一些需要注意的地方:
1,驱动错误。注意自己导入的jar包和jdk的版本是不是匹配。详情见 Oracle的JDBC驱动的版本你了解吗?。
(打不开的童鞋请使用此url:http://www.2cto.com/database/201202/120260.html)
2,注意本文jsp完整代码示例-eg1中的代码 使用的是上面的jdbc表,用户在注册时需要将代码写成number类型而不是字符串类型。
--------------------------------JSP实例及完整代码-------------------------------------
需求:实现注册后登陆的功能
思路:
1,用户中注册,数据库信息添加
2,注册成功,跳转到登陆页面
3,登陆成功,跳转到欢迎页面
共4个jsp文件,完整代码如下:
1,jdbcregister.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>register</title>
<script language="JavaScript">/*在客户端进行验证,减轻服务器数据验证的负担*/
function checkUserInfo(){
if(document.myform.name.value==""){
alert("用户名不能为空");
return false;
}
if(document.myform.password.value==""){
alert("密码不能为空");
return false;
}
if(document.myform.password.value!=document.myform.repassword.value)
{
alert("两次密码不一致!");
return false;
}
}
</script>
</head>
<body>
<form action="jdbcadd.jsp" name="myform" method="post" οnsubmit="return checkUserInfo()">
username:<input type="text" name="name" value="请输入用户名" />
password:<input type="password" name="password" />
repassword:<input type="password" name="repassword"/>
<input type="submit" name="submit">
<!--
//如果选择在服务器进行验证,下面为注册页面的jsp代码(提示框需要在注册页面显示)
request.setCharacterEncoding("GBK");
String message = (String)request.getAttribute("message");
if(message!=null&&!message.equals(""))
out.println("<font color='red'>"+message+"</font>");
//验证步骤在注册处理页面,即jdbcadd.jsp页面,相关代码省略。
-->
</form>
</body>
</html>
2.jdbcadd.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>login</title>
<body>
<%
request.setCharacterEncoding("UTF-8");
int line ;
String n= request.getParameter("name").trim();
String p= request.getParameter("password").trim();
String driver="oracle.jdbc.OracleDriver";
String sql = "insert into jdbc(name,password) VALUES ('"+n+"',"+p+")";
String url="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
String user="scott";
String pwd="tiger";
String sqlname = null;
String sqlpassword = null;
try{
//加载驱动
Class.forName(driver);
//创建链接
Connection con = DriverManager.getConnection(url,user,pwd);
//创建statement对象
Statement st = con.createStatement();
out.println("正在注册... ");
line = st.executeUpdate(sql); //返回一个整数,指示受影响的行数
out.println("正在更新... ");
out.println("正在比对... ");
if(line>0)
{
System.out.println("注册成功!");
response.sendRedirect("jdbclogin.jsp");
}
else
out.println("you are stupid!!");
con.close();
}catch(Exception e){
e.printStackTrace();
}
%>
</body>
</html>
3,jdbclogin.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>login</title>
<body>
<form action="jdbcadd.jsp">
username:<input type="text" name="name" value="请输入用户名" />
password:<input type="password" name="password" />
repassword:<input type="password" name="repassword"/>
<input type="submit" name="submit">
</form>
</body>
</html>
4,jdbccontrol.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
4,jdbccontrol.jsp ——>登陆处理页面
<%@ page import="java.sql.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>login</title>
<body>
<%
request.setCharacterEncoding("GBK");
System.out.println("登陆验证...");
boolean flag=false;//必须赋初值 如果没有会报错并提示initial 设置标志变量 如果找到 置为真 循环结束后
String name = request.getParameter("Name");
String password = request.getParameter("Password");
String sqlname=null;
String sqlpassword = null;
String user="scott";
String pwd="tiger";
String sql="select * from jdbc";
String driver="oracle.jdbc.OracleDriver";
String url="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
try{
//加载驱动
Class.forName(driver);
//创建链接
Connection con = DriverManager.getConnection(url,user,pwd);
//创建statement对象
Statement st = con.createStatement();
//获得结果集
ResultSet rs = st.executeQuery(sql);
while(rs.next())
{
sqlname=rs.getString("name");
sqlpassword = rs.getString("password");
if(sqlname.equals(name)&&sqlpassword.equals(password))
flag = true;
}
if(flag)
response.sendRedirect("welcome.jsp");
else
out.println("你是猪吗\n");
con.close();
rs.close();
}catch(Exception e){
out.println(e);
e.printStackTrace();
}
%>
</body>
</html>
eg2,比较完整的用户登录验证及注册(eg2只是对eg1进行了简单变动,没有思路的童鞋请重新理解eg1。代码略)
需求:实现登陆验证以及注册功能
思路:
1,用户登陆,数据库信息比对
2,登陆成功,跳转到欢迎页面
3,登陆失败,提示用户不存在,询问注册还是返回重新登陆
4,选择注册---注册页面---信息添加到数据库---登陆页面--登陆
(代码略)