cmcczwds
2015-02-02 05:40
采纳率: 0%
浏览 2.4k

急急急,请教JSP如何调用数据库mysql的java文件。

各位好,我实在是菜鸟,在网上找个JAVA文件,连接mysql数据库,经过测试,已经成功,现在用JSP页面来调用,就是不通过,真心请各位指点,急急急,下面把JAVA文件和JSP页面发出来,小弟谢过!
JAVA文件
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.Statement;

public class DB {
public static void main(String[] args) throws Exception {
Connection conn = null;
String sql;
// MySQL的JDBC URL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值
// 避免中文乱码要指定useUnicode和characterEncoding
// 执行数据库操作之前要在数据库管理系统上创建一个数据库,名字自己定,
// 下面语句之前就要先创建javademo数据库
String url = "jdbc:mysql://localhost:3306/数据库名字?"
+ "user=数据库用户名&password=数据库密码&useUnicode=true&characterEncoding=UTF8";

    try {
        // 之所以要使用下面这条语句,是因为要使用MySQL的驱动,所以我们要把它驱动起来,
        // 可以通过Class.forName把它加载进去,也可以通过初始化来驱动起来,下面三种形式都可以
        Class.forName("com.mysql.jdbc.Driver");// 动态加载mysql驱动
        // or:
        // com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver();
        // or:
        // new com.mysql.jdbc.Driver();

        System.out.println("成功加载MySQL驱动程序");
        // 一个Connection代表一个数据库连接
        conn = DriverManager.getConnection(url);
        // Statement里面带有很多方法,比如executeUpdate可以实现插入,更新和删除等
        Statement stmt = conn.createStatement();
        sql = "create table student(NO char(20),name varchar(20),primary key(NO))";
        int result = stmt.executeUpdate(sql);// executeUpdate语句会返回一个受影响的行数,如果返回-1就没有成功
        if (result != -1) {
            System.out.println("创建数据表成功");
            sql = "insert into student(NO,name) values('2012001','陶伟基')";
            result = stmt.executeUpdate(sql);
            sql = "insert into student(NO,name) values('2012002','周小俊')";
            result = stmt.executeUpdate(sql);
            sql = "select * from student";
            ResultSet rs = stmt.executeQuery(sql);// executeQuery会返回结果的集合,否则返回空值
            System.out.println("学号\t姓名");
            while (rs.next()) {
                System.out
                        .println(rs.getString(1) + "\t" + rs.getString(2));// 入如果返回的是int类型可以用getInt()
            }
        }
    } catch (SQLException e) {
        System.out.println("MySQL操作错误");
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        conn.close();
    }

}

}
JSP页面
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*"%>
<%@ page import="org.cmcc.databaseconnection.*"%>
<%
request.setCharacterEncoding("utf-8");
%>
<%

DB conn=new DB();
Statement stmt = conn.createStatement();
String str1 = "select * from yh";
ResultSet result=stmt.executeQuery(str1);
if(result.next())
{

%>

<%=result.getString(2)%>;
<%

}

else
{
%>
<br> alert(&quot;XX&quot;);<br> history.back();<br>
<%
}
%>

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

8条回答 默认 最新

  • Ryan_Chen 2015-02-02 06:39

    页面接收数据。。。或者你把处理数据的业务封装成一个类,到时候只要传参获取数据就行了,不要在页面进行sql操作

    打赏 评论
  • fengqilove520 2015-02-02 07:02
    打赏 评论
  • danielinbiti 2015-02-02 14:44

    你DB这个Class哪里来的createStatement这个方法,DB的Class里面只有main方法。把main方法改成返回Connection的方法

    打赏 评论
  • X_TIE 2015-02-03 07:30

    不明白为什么非要在jsp页面做这些操作。这样多麻烦。如果非要这么做 那你就试试把DB改成
    public Connection conn=null;

    public Statement stmt=null;

    public ResultSet rs=null;

    private String username="root";  //
    private String password="root";
    private String LinkDatabaseUrl="jdbc:mysql://localhost:3306/qianqianjinrong"; 
    String url = "jdbc:mysql://localhost:3306/test" ;     
    
    
    
    private Connection getConn() 
    {
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
        } catch (InstantiationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
        Connection conn = null;
        try {
    
            conn = DriverManager.getConnection(LinkDatabaseUrl,username, password);
    
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
        return conn;
    }
    这样 
    然后用的时候  DB CONN= NEW DB();
    CONN.getConn();
    
    这样就得到了一个连接   然后就是操作数据库了
    
    
    下面给你个登录的例子应该就懂了
    boolean  login(String F_LoginName,String password)
     {
         String sql="SELECT F_LoginName,F_PassWord FROM T_User  WHERE F_LoginName=?";
         Connection conn=getConn();
         if(conn==null)
            return false;
         PreparedStatement state;
         try{
            state = conn.prepareStatement(sql);
            state.setString(1, F_LoginName);
            ResultSet Result= state.executeQuery();
             while(Result.next())
                 {
                 String ID =Result.getString(1);
                 String pwd=Result.getString(2);
                 if(F_LoginName.equals(ID)&&password.equals(pwd))
                    {
                     close();
                     return true;
                    }
                } 
            close();
            return false;
          } catch (SQLException e) {
            e.printStackTrace();
            close();
            return false;
        }
    
     } 
    
    打赏 评论
  • freedamjustice 2015-02-03 09:44

    JSP有引入相关的类么。另外请不要在JSP弄这些,养成良好的习惯。

    打赏 评论
  • 进击的小呆呆 2015-02-13 08:32

    在JSP页面需要引入JAVA中所需要的包

    打赏 评论
  • WorldMobile 2015-11-08 14:51

    建议你用java做个webservice或者rest,然后用jsp在前台调用比较好

    打赏 评论
  • 心随自在飞 2016-01-06 08:40

    你JSP要跟数据库做交互,将信息提交到后台做这些处理就好啦。

    你这样一点都不科学!

    前台代码和后台代码混淆了!

    打赏 评论

相关推荐 更多相似问题