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

各位好,我实在是菜鸟,在网上找个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个回答

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

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

不明白为什么非要在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;
    }

 } 

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

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

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

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

你这样一点都不科学!

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!