jsp怎么连接数据库

jsp怎么连接数据库,第1张

1、jsp是java服务端动态网页技术,主要应用于网页构建,理论上讲不应该在页面中直接连数据库。合理的做法是先构建一个java后端,然后在JAVA后端中通过jdbc连接sqlserver。
2、如果一定要在jsp页面中连数据库也是可以的。jsp中有专门的sql标签可以连接数据库进行 *** 作,这是jstl的内容,需要导入相应的数据库驱动包。
3、jsp的内容相对来说技术难度都不算特别高,学习起来还是比较容易的。
4、希望对你有帮助。祝你学有所得。

import javasql;
public class DBCon {
public DBCon()
{

}
public Connection getConnection()
{
Connection conn=null;
try{
ClassforName("oraclejdbcdriverOracleDriver");//驱动程序名
String url="jdbc:oracle:thin:@192168151:1521:evatesoft";
//192168151为服务器的地址
//ads2为数据库的SID ads2
String user="evatesoft";//数据库的用户名
String password="evatesoft";//数据库的密码
conn= DriverManagergetConnection(url,user,password);

}
catch(Exception e)
{
Systemoutprintln(etoString());
}
return conn;
}
}
在jsp中<%DBCon db = new DBCon(); %>

代码功能:实现jsp文件连接数据库,这是接口的代码
代码使用:以下代码是连接MySQL数据库的接口程序。将他作为一个java文件或者加入到需要调用数据库的jsp文件中作为一部分都可以用,一定先写上接口,在写后面的数据库 *** 作,最后记得关闭数据库。
源代码:
String url="jdbc:mysql://localhost:3306/labuser=root&password=root&useUnicode=true&characterEncoding=GB2312";//连接相应的mysql服务器
ClassforName("commysqljdbcDriver")newInstance();//载入相应的驱动程序
Connection con = DriverManagergetConnection(url);
String sql =
"insert message (name,email,phone,department,subject,message,time,vision)"
+"values('"+name+"','"+email+"','"+phone+"','"+department+"','"+subject+"','"+message+"','"+time+"','"+vision+"')";//执行数据库代码
PreparedStatement smt = conprepareStatement(sql);
smtexecuteUpdate(sql);
sql="select from message";
ResultSet rs = smtexecuteQuery(sql);
while(rsnext())
count++;
lastp=(int)Mathceil((double)count/5);
responsesendRedirect("sendmailjsp");
smtclose();//关闭数据库
conclose();

跟着我做就是了,这个可是我现场测试和编写的哦!!没有任何copy
(1)把mysql的驱动放到tomcat的lib中 驱动是这个
>用JDBC技术\x0d\创建数据库连接,分为以下几步:\x0d\1装载并注册数据库的JDBC驱动程序\x0d\2取得数据库连接\x0d\3建立Statement 对象\x0d\4准备并执行调用SQL语句\x0d\5处理ResultSet中的记录集\x0d\6释放资源\x0d\第一步\x0d\加载驱动程序\x0d\ try{ //装载MySQL数据库驱动\x0d\ ClassforName("commysqljdbcDriver");\x0d\ }\x0d\ catch(ClassNotFoundException e) \x0d\ { \x0d\ eprintStackTrace();\x0d\ }\x0d\注意:在使用JDBC之前,要在文件前导入有关SQL的类即\x0d\ import javasql\x0d\第二步\x0d\取得数据库连接\x0d\try{\x0d\String url="jdbc:mysql://localhost:3306/student;\x0d\String user="root";\x0d\String password="1234";\x0d\con=DriverManagergetConnection(url,user,password);\x0d\}\x0d\catch(SQLException e)\x0d\{\x0d\ eprintStackTrace();\x0d\ }\x0d\第三步\x0d\建立Statement 对象\x0d\try{\x0d\ Statement sql=concreateStatement();\x0d\ }\x0d\catch(SQLException e)\x0d\ {\x0d\ eprintStackTrace();\x0d\ }\x0d\第四步\x0d\执行各种SQL语句\x0d\try{\x0d\ ResultSet rs=sqlexecuteQuery(\x0d\ "select from student");\x0d\ }\x0d\catch(SQLException e)\x0d\ {\x0d\ eprintStackTrace();\x0d\ }\x0d\第五步\x0d\获取查询结果\x0d\ ResultSet rs=sqlexecuteQuery(\x0d\ "select from student");\x0d\ while(rsnext())\x0d\ {\x0d\ rsgetString(2)或者是rsgetString("name");\x0d\ rsgetInt(3)或者是rsgetInt("age");\x0d\ }\x0d\注意\x0d\只有select语句才会有结果集返回;\x0d\ResultSet对象一次只能看到一个数据行\x0d\使用next()方法走到下一数据行\x0d\获得一行数据后,ResultSet对象可以使用getXxx()方法获得字段值,将位置索引或字段名传递给get第六步\x0d\关闭创建的各个对象(后打开的先关)\x0d\ rsclose();\x0d\ sqlclose();\x0d\ conclose();Xxx方法()即可。

1、jsp是java服务端动态网页技术,主要应用于网页构建,理论上讲不应该在页面中直接连数据库。合理的做法是先构建一个java后端,然后在JAVA后端中通过jdbc连接sqlserver。
2、如果一定要在jsp页面中连数据库也是可以的。jsp中有专门的sql标签可以连接数据库进行 *** 作,这是jstl的内容,需要导入相应的数据库驱动包。
3、jsp的内容相对来说都还是比较简单,没有特别大的技术难度。
4、希望对你有帮助。

我给你我原来写过的吧。很久以前的了。只给你连接数据库这些,其他的你自己看着写吧。
下面是我当初写的其中一个dao类,有注释。你看看,模仿着写吧,肯定能写出来。
package comdao;
import javasqlConnection;
import javasqlDate;
import javasqlDriverManager;
import javasqlPreparedStatement;
import javasqlResultSet;
import javasqlSQLException;
import javasqlStatement;
import javautilList;
import javaxservletjspjstlsqlResult;
import javaxservletjspjstlsqlResultSupport;
import comtoolBaseTool;
public class BillDAO {
// 数据库连接
private Connection con;
// 数据库SQL语句执行者对象
private Statement stmt;
// 数据库SQL语句执行者对象
private PreparedStatement pstmt;
// 数据库SQL查询结果集
private ResultSet rs;
// 打开数据库连接
private void openConnection() {
try {
// 加载数据库驱动
ClassforName("oraclejdbcdriverOracleDriver");
// 获得数据库连接
con = DriverManagergetConnection(
"jdbc:oracle:thin:@localhost:1521:orcllib", "zxl", "zxl");
} catch (ClassNotFoundException e) {
eprintStackTrace();
} catch (SQLException e) {
eprintStackTrace();
}
}
// 关闭数据库连接及资源
private void closeConnection() {
if (rs != null) {
try {
rsclose();
} catch (SQLException e) {
eprintStackTrace();
}
}
if (stmt != null) {
try {
stmtclose();
} catch (SQLException e) {
eprintStackTrace();
}
}
if (pstmt != null) {
try {
pstmtclose();
} catch (SQLException e) {
eprintStackTrace();
}
}
if (con != null) {
try {
conclose();
} catch (SQLException e) {
eprintStackTrace();
}
}
}

//检查账单编号是否存在的方法
@SuppressWarnings("finally")
public boolean checkBillNumber(long bill_number) {
boolean result = false;
openConnection();
// 编写SQL语句
String sql = "select bbill_number from bill b";
try {
// 实例化执行SQL语句的对象preparedstatement
stmt = concreateStatement();
// 执行查询语句并返回结果集
rs = stmtexecuteQuery(sql);
while (rsnext()) {
if (bill_number == rsgetLong("bill_number")) {
return result;
}
}
result = true;
} catch (SQLException e) {
eprintStackTrace();
} finally {
// 关闭数据库连接及资源
closeConnection();
return result;
}
}
//分页显示账单列表的方法
@SuppressWarnings("finally")
public Result getPagingBill(int page_number, int page_data_number) {
Result result = null;
// 打开数据库连接
openConnection();
// 编写SQL语句
String sql = "select rbill_number,rgoods_name,rgoods_number,rtransaction_amount," +
"rvalue_name,rsupplier_name,rgoods_description,rbill_date from " +
"(select rownum as rn,b from bill_list_view b) r where rrn between "+
BaseToolgetPagingString(page_number, page_data_number);
try {
// 实例化执行SQL语句的对象preparedstatement
stmt = concreateStatement();
// 执行查询语句并返回结果集
rs = stmtexecuteQuery(sql);
// 将结果集储存在Result对象当中
result = ResultSupporttoResult(rs);
} catch (SQLException e) {
eprintStackTrace();
} finally {
// 关闭数据库连接及资源
closeConnection();
return result;
}
}

//获得账单总数的方法
@SuppressWarnings("finally")
public int getBillCount() {
int result = 0;
// 打开数据库连接
openConnection();
// 编写SQL语句
String sql = "select count(bbill_number) from bill_list_view b ";
try {
// 实例化执行SQL语句的对象preparedstatement
stmt = concreateStatement();
// 执行查询语句并返回结果集
rs = stmtexecuteQuery(sql);
// 取得账单总数
while (rsnext()) {
result = rsgetInt(1);
}
} catch (SQLException e) {
eprintStackTrace();
} finally {
// 关闭数据库连接及资源
closeConnection();
return result;
}
}

//将用户组合查询的账单列表分页
@SuppressWarnings("finally")
public Result getFilterPagingBill(String goods_name, int pay_status ,
int page_number , int page_data_number){
Result result = null;
// 打开数据库连接
openConnection();
// 编写SQL语句
String sql = "select rbill_number,rgoods_name,rgoods_number,rtransaction_amount," +
"rvalue_name,rsupplier_name,rgoods_description,rbill_date " +
" from (select rownum as rn,b from bill_list_view b where ";
String sql_last = ") r where rrn between " + BaseToolgetPagingString(page_number, page_data_number);
// 将参数初始化
String value_name = "";
if (pay_status == 3)
value_name = "已付款";
else if (pay_status == 4)
value_name = "未付款";
else
value_name = null;
if (""equals(goods_nametrim()))
goods_name = null;
// 按照用户查询的条件处理
try {
if (value_name != null && goods_name == null) {
sql = sql + "bvalue_name=" + sql_last;
pstmt = conprepareStatement(sql);
pstmtsetString(1, value_name);
} else if (value_name == null && goods_name != null) {
goods_name = "%"+goods_name+"%";
sql = sql + "bgoods_name like " + sql_last;
pstmt = conprepareStatement(sql);
pstmtsetString(1, goods_name);
} else {
goods_name = "%"+goods_name+"%";
sql = sql + "bvalue_name= and bgoods_name like " + sql_last;
pstmt = conprepareStatement(sql);
pstmtsetString(1, value_name);
pstmtsetString(2, goods_name);
}
rs = pstmtexecuteQuery();
result = ResultSupporttoResult(rs);
} catch (SQLException e) {
eprintStackTrace();
} finally {
closeConnection();
return result;
}
}

//获得用户组合查询的账单总数
@SuppressWarnings("finally")
public int getFilterBillCount(String goods_name, int pay_status) {
int result = 0;
// 打开数据库连接
openConnection();
// 编写SQL语句
String sql = "select count(bbill_number) from bill_list_view b where ";
// 将参数初始化
String value_name = "";
if (pay_status == 3)
value_name = "已付款";
else if (pay_status == 4)
value_name = "未付款";
else
value_name = null;
if (""equals(goods_nametrim()))
goods_name = null;
// 按照用户查询的条件处理
try {
if (value_name != null && goods_name == null) {
sql = sql + "bvalue_name= ";
pstmt = conprepareStatement(sql);
pstmtsetString(1, value_name);
} else if (value_name == null && goods_name != null) {
goods_name="%"+goods_name+"%";
sql = sql + "bgoods_name like ";
pstmt = conprepareStatement(sql);
pstmtsetString(1, goods_name);
} else {
goods_name="%"+goods_name+"%";
sql = sql + "bvalue_name= and bgoods_name like ";
pstmt = conprepareStatement(sql);
pstmtsetString(1, value_name);
pstmtsetString(2, goods_name);
}
rs = pstmtexecuteQuery();
while(rsnext()){
result = rsgetInt(1);
}
} catch (SQLException e) {
eprintStackTrace();
} finally {
closeConnection();
return result;
}
}

//根据账单编号获得账单详细信息的方法
@SuppressWarnings("finally")
public Result getBillForBillNumber(long bill_number){
Result result = null;
// 打开数据库连接
openConnection();
// 编写SQL语句
String sql = "select b from bill_list_view b where bbill_number="+bill_number;
try {
// 实例化执行SQL语句的对象preparedstatement
stmt = concreateStatement();
// 执行查询语句并返回结果集
rs = stmtexecuteQuery(sql);
// 将结果集储存在Result对象当中
result = ResultSupporttoResult(rs);
} catch (SQLException e) {
eprintStackTrace();
} finally {
// 关闭数据库连接及资源
closeConnection();
return result;
}
}

//为账单增加数据的方法
@SuppressWarnings("finally")
public int updateBill(List<Object> values){
//用于返回执行结果
int result = 0;
// 打开数据库连接
openConnection();
// 编写SQL语句
String sql = "insert into bill values (,,,,,,,)";
try {
// 实例化执行SQL语句的对象preparedstatement
pstmt = conprepareStatement(sql);
//设置参数
for(int i=0,j=1;i<valuessize();i++,j++){
if(valuesget(i) instanceof Integer){
pstmtsetInt(j, (Integer)valuesget(i));
}else if(valuesget(i) instanceof Long){
pstmtsetLong(j, (Long)valuesget(i));
} else if(valuesget(i) instanceof String){
pstmtsetString(j, (String)valuesget(i));
}else{
pstmtsetDate(j, (Date)valuesget(i));
}
}
//获得执行结果
result = pstmtexecuteUpdate();
} catch (SQLException e) {
eprintStackTrace();
} finally {
// 关闭数据库连接及资源
closeConnection();
//返回执行结果
return result;
}
}

//为账单修改数据的方法
@SuppressWarnings("finally")
public int saveBill(List<Object> values){
//用于返回执行结果
int result = 0;
// 打开数据库连接
openConnection();
// 编写SQL语句
String sql = "update bill b set bgoods_name=,bgoods_number=,btransaction_amount=," +
"bpay_status=,bsupplier_number=,bgoods_description=,bbill_date= where bbill_number=";
try {
// 实例化执行SQL语句的对象preparedstatement
pstmt = conprepareStatement(sql);
//设置参数
for(int i=0,j=1;i<valuessize();i++,j++){
if(valuesget(i) instanceof Integer){
pstmtsetInt(j, (Integer)valuesget(i));
}else if(valuesget(i) instanceof Long){
pstmtsetLong(j, (Long)valuesget(i));
}else if(valuesget(i) instanceof String){
pstmtsetString(j, (String)valuesget(i));
}else{
pstmtsetDate(j, (Date)valuesget(i));
}
}
//获得执行结果
result = pstmtexecuteUpdate();
} catch (SQLException e) {
eprintStackTrace();
} finally {
// 关闭数据库连接及资源
closeConnection();
//返回执行结果
return result;
}
}

//删除账单中数据的方法
@SuppressWarnings("finally")
public int deleteBill(long bill_number){
//用于返回执行结果
int result = 0;
// 打开数据库连接
openConnection();
// 编写SQL语句
String sql = "delete bill b where bbill_number=";
try {
// 实例化执行SQL语句的对象preparedstatement
pstmt = conprepareStatement(sql);
//设置参数
pstmtsetLong(1, bill_number);
//获得执行结果
result = pstmtexecuteUpdate();
} catch (SQLException e) {
eprintStackTrace();
} finally {
// 关闭数据库连接及资源
closeConnection();
//返回执行结果
return result;
}
}
}

上面的给出了jsp内嵌java的最初模式,现在一般是三层结构了即MVC结构,就这个例子我来给你解释下是怎么做的,java对连接数据库提供了统一的接口,各个数据库厂商根据提供的接口规范开发自己的连接方法顺序如下:1、用ClassforName()方法加载驱动:ClassforName("commicrosoftjdbcsqlserverSQLServerDriver")newInstance(); 黑体部分为数据库厂商自己开发的驱动。2、定义好连接数据库的url地址,连接串String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";黑体部分为固定写法不用理会。回到你最初的问题,如何创建数据库,这里你可以去baidu下每个数据库创建的方法,一般数据库安装的时候都有默认的数据库名,和对应的系统管理员工号和密码,DatabaseName=pubs这里说明sql serv 2000中建立了一个名字叫pubs的数据库jdbc:microsoft:sqlserver://localhost:1433固定写法唯一不同的是1433端口号,可能你在安装sql serv 2000的时候改变了该端口号为1500那么这里就应该为jdbc:microsoft:sqlserver://localhost:15003、定义好DatabaseName=pubs的登录用户名和密码 String user="sa";用户名
String password="";密码4、创建Connection对象,通过调用DriverManagergetConnection方法获得。 Connection conn= DriverManagergetConnection(url,user,password);黑体部分就是你定义好的连接串,用户名,密码,不可改变顺序。到这里为止数据库就连接上了,但是连接好了数据库还要做点什么,比如打印出来,接下看。5、通过获得的Connection对象conn创建Statement 对象stmtStatement stmt=conncreateStatement(ResultSetTYPE_SCROLL_SENSITIVE,ResultSetCONCUR_UPDATABLE);黑体部分是定义ResultSet的一些属性的,具体含义可以参考JDK的api。6、定义好你准备取得数据的sql语句,比如下面 select from test说明想从test表中取得所有的数据,关于sql语句可以去查找相关数据库资料。 String sql="select from test";定义好语句后,就用上一步创建好的Statement 对象stmt来执行这个sql语句,并返回一个ResultSet对象。
  ResultSet rs=stmtexecuteQuery(sql);执行完这步后rs中已经取得了test表所有的数据,那么接下来要展现在网页上。7、rsnext()对你取得的记录集做一个循环直到没有值为止,rsgetString(1)代表你test表中的第一个字段rsgetString(2)代表你test中的第二个字段,如果还有更多字段可以继续rsgetString(3)rsgetString(N) while(rsnext()) {%>
您的第一个字段内容为:<%=rsgetString(1)%>
您的第二个字段内容为:<%=rsgetString(2)%>
<%}%>8、当所有数据展现完毕,调用close()方法将所有资源关闭。 rsclose();
stmtclose();
connclose();回顾下大致过程:加载驱动 ClassforName();定义好相关的数据,调用DriverManagergetConnection(driver,user,password)获得一个数据库连接conn通过conn创建Statement对象stmt,conncreateStatement();通过stmt执行定义好的sql语句获得数据集ResultSet rs=stmtexecuteQuery(“select from test”);通过rsnext()方法循环遍历数据集的数据,通过rsgetString(1)获得第一条数据的第一个字段内容,这里要注意的是getString是对应数据库是字符类型,如果test表的第一个字段不是字符类型则用rsgetInt(1)获得。展现完毕后关闭所有资源conn stmt rs close方法。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12978237.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存