我想在jsp中链接上数据库直接可以执行创建数据库的语句,原来做的只是在链接到已经创建好的数据库,然后在数据库里面进行诸如增加删除或者是穿件表的操作。现在我想直接用jsp语句创建一个数据库,写了一个jsp,高手们帮帮忙,看看什么问题
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%!
String password = null;
String username = null;
String DBDRIVER = "org.gjt.mm.mysql.Driver";
String DBURL = "jdbc:mysql://localhost:3306";
String DBUSER = username;
String DBPASSWORD = password;
Connection conn = null;
PreparedStatement pstmt = null;
String name = null;
%>
<%
username = request.getParameter("sqlname");
password = request.getParameter("sqlpass");
%>
<%
try
{
Class.forName(DBDRIVER);
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
String sql = "create database" + username;
pstmt= conn.prepareStatement(sql);
pstmt.executeUpdate();
}
catch(Exception e){
out.println(e);
} finally{
if(pstmt!=null) pstmt.close();
if(conn!=null) conn.close();
}%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%!
String password = null;
String username = null;
String DBDRIVER = "org.gjt.mm.mysql.Driver";
String DBURL = "jdbc:mysql://localhost:3306";
String DBUSER = username;
String DBPASSWORD = password;
Connection conn = null;
PreparedStatement pstmt = null;
String name = null;
%>
<%
username = request.getParameter("sqlname");
password = request.getParameter("sqlpass");
%>
<%
try
{
Class.forName(DBDRIVER);
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
String sql = "create database" + username;
pstmt= conn.prepareStatement(sql);
pstmt.executeUpdate();
}
catch(Exception e){
out.println(e);
} finally{
if(pstmt!=null) pstmt.close();
if(conn!=null) conn.close();
}%>
1:
把 String DBURL = "jdbc:mysql://localhost:3306";
改为 String DBURL = "jdbc:mysql://localhost/mydata?";2:把String sql = "create database" + username;
改为:String sql = "show tables";
程序运行,并没有错误。我也是初学者,我的结论是这样的:第一,楼主的 DBURL 错误。
第二,jsp 只能使用、修改、或者查询数据库。并不能创建数据库。
所以指定 DBURL 的时候,需要在最后加上 一个数据库的名字 (例如我这里用的是 mydata);如果把名字去掉,就会产生空指向异常……
这个跟JSP没什么关系吧。只要获取数据库连接,能不能执行SQL要看是否连接的用户在数据库上用权限。这里只所以无法进行create database,根据楼主给的错误信息是,数据库连接都是错误的。因此这句话还没执行呢。你自己改动过的程序能连接数据库,但是无法create database。这个你的看下你本地的数据库中为你连接的该用户是否有create database的权限。
你没抛出No suitable driver found for jdbc:mysql://localhost:3306 的错误,证明你的数据库连接驱动没问题。数据库已经连接上了。而楼主的不一样。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%!
String DBDRIVER = "org.gjt.mm.mysql.Driver";
String DBURL = "jdbc:mysql://localhost:3306";
String DBUSER = "root";
String DBPASSWORD ="root";
Connection conn = null;
PreparedStatement pstmt = null;
%>
<%
try
{
Class.forName(DBDRIVER);
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
String sql = "create database user" ;
pstmt= conn.prepareStatement(sql);
pstmt.executeUpdate();
}
catch(Exception e){
out.println(e);
} finally{
if(pstmt!=null) pstmt.close();
if(conn!=null) conn.close();
}%>
执行增删语句的时候是可以连接上数据库的,我只是想在jsp中实现创建数据库,哪里的错误还请高手们帮忙
执行的时候报的是这个错误
后面加上数据库的名字的时候是可以实现对数据库的操作的,
<%@ page import="java.sql.*"%>
<%!
String DBDRIVER = "org.gjt.mm.mysql.Driver";
String DBURL = "jdbc:mysql://localhost:3306/";
String DBUSER = "root";
String DBPASSWORD ="root";
Connection conn = null;
PreparedStatement pstmt = null;
%>
<%
try
{
Class.forName(DBDRIVER);
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
String sql = "create database woshini" ;
pstmt= conn.prepareStatement(sql);
pstmt.executeUpdate();
}
catch(Exception e){
out.println(e);
} finally{
if(pstmt!=null) pstmt.close();
if(conn!=null) conn.close();
}%>
这样写完全可以实现数据库的创建