问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

jsp连接数据库时出现了问题。

发布网友 发布时间:2022-04-09 19:53

我来回答

3个回答

热心网友 时间:2022-04-09 21:22

哈哈,别听前面的,如果是前面说的:
"对数据库操作是用PreparedStatement接口,不是用Connection "
如果这样,根本不可能有异常出现,只是报告错误而已.因为异常是运行的时候出现的,而错误是编译器编译的时候告诉你的.
很明显:java.lang.NullPointerException 是异常.而不是错误!

你的sql有问题:
你的sql:
ResultSet rs=Condb.executeQuery("select *from admin where name="+admin_name+"and password="+password+"");

假设: admin_name="123", password="123"
那么你的sql 将是:

select *from admin where name=123and password=123

问一下你,这样的sql能运行吗?

所以在14行rs仍然指向为空,能没有java.lang.NullPointerException 异常吗?

严格的来说,我们一般将if语句的条件写为:
if(rs!=null&&rs.next())
看到了吗?如果rs为空,后面的next方法不会被执行,就不会有java.lang.NullPointerException 异常发生了,你要知道你的sql可能在数据库内找不到信息!在找不到信息的时候不这样写一样会有java.lang.NullPointerException 异常出现!

你的sql错误在这里:
1.如果数据库里面的name列和password列不是数值型的话就一定出错,因为少了''将他们括起来.
2. '*' 号没有和from 分开,and前面要有一个空格,刚开始写肯定是很多错误的了,我也是一样的.

所以应该改为:
ResultSet rs=Condb.executeQuery("select * from admin where name='"+admin_name+"' and password='"+password+"'");

如果你觉得这样很麻烦的话,可以考虑用java.sql.PreparedStatement接口.
例如:
try
{
PreparedStatement ps=cn.prepareStatement"select * from admin where name=? and password=?");//假设cn为你的Connection对象
/*如果你使用的是int型的数据,请这么写:
ps.setInt(1,2);//设置第一个?号为一个整数2
*/
ps.setString(1,admin_name);//设置第一个?为字符串变量admin_name的值
ps.setString(2,password);//设置第二个?为字符串变量password的值
rs=ps.executeQuery();//假设rs为ResultSet对象
.......
}catch(SQLException ex)
{
ex.printStackTrace(); //强烈建议你写这个,因为他能打印异常的具体信息,提供给你调试用!
}

热心网友 时间:2022-04-09 22:40

步骤(1):加载要使用的数据库驱动程序类,该工作由Class类的静态方法forName完成,他加载向相应的驱动程序类,并创建该类的一个实例。加载JDBC-ODBC桥驱动类采用如下语句:
Class.forName("classname");
(2):声明一个Connection接口的对象。如:
Connection conn;
(3)并使用driverManager类的静态方法getConnection建立数据库连接,该方法主要有两种重载形式:
Connection getConnection(String url);
Connection getConnection(String url,String user,String password)

例子:
import java.sql.Connection;
import java.sql.DriverManager;

public class Conn {

// 非链接池
public static Connection getConn() {
// 建立连接对象
Connection conn = null;
// 说明JDBC驱动类所在位置的字符串,与驱动所在目录对应。
String driver = "com.mysql.jdbc.Driver";
// MySQL的JDBC URL 字符串
// 连接到本地主机,端口为3306,数据库为mysql,
String sourse = "jdbc:mysql://127.0.0.1:3306/dq?characterEncoding=utf-8";
try {
// 初始化MySQL的JDBC桥驱动类
Class.forName(driver);
// 使用DriverManager类的getConnection方法建立连接。url=sourse,用户名为root,密码为空。

conn = DriverManager.getConnection(sourse, "root", "");
} catch (Exception e) {
System.out.println(e.toString());
}
// 返回连接对象
return conn;
}

public static void main(String[] args) {
System.out.println(Conn.getConn());
}

}
// import java.sql.*;
//
// public class mysqlDEMO{
// public static void main(String []args)throws Exception{
// //说明JDBC驱动类所在位置的字符串,与驱动所在目录对应
// String mysqldriver="org.mm.mysql.Driver";
// //MySQL的JDBC URL字符串
// //连接到本地主机,端口为3306,数据库为mysql,用户名为root,密码为空。
// String url="jdbc:mysql://localhost:3306/mysql?user=root;password=";
// //建立连接对象
// Connection conn;
// //初始化MyJDBC的JDBC桥驱动类
// Class.forName(mysqldriver);
// //使用DriverManager类的getConnection方法建立连接
// conn=DriverManager.getConnection(url,"","");
// }
// }

热心网友 时间:2022-04-10 00:15

对数据库操作是用PreparedStatement接口,不是用Connection
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
轻度慢性萎缩性胃炎 活动期,伴轻度肠 化 胃角多发糜烂。医生说了我... 胃窦粘膜慢性轻度萎缩性炎伴轻度肠化胃窦粘膜慢性轻度萎缩性炎? 芬兰留学读研费用是多少 芬兰留学读研时间 去芬兰留学学费生活费一年要多少 芬兰留学读研费用是多少? 芬兰留学读研学费多少? 感冒好多天了,可不可以打蓝球或者其它运动出出汗啊? 感冒打喷嚏,鼻塞然后可以让自己多出出汗吗 宝宝感冒了能去游泳吗 罗湖口岸到惠州莱蒙水榭湾多少公里 三月份到六月份,都有哪些国定假期?? 求东北炒面的做法 6月份有那些节日 我国六月份有什么节日 华为怎么设置智能语音助手 董文华唱的十五的月亮这首歌怎么好多年未在电视上听过了 华为荣耀20i在第一种导航模式下怎么使用语音助手 蒋大为一辈子只唱了一支歌,有什么值得骄傲的? 十五月亮歌曲的词作者是谁 请问你是大量收购红姑娘果的商家吗我有红姑娘果怎么联系,能不能签约种值我的手机15898133078 红姑娘产量如何 洗脚盆注册商标属于哪一类? “中国红”可以注册为足疗按摩商标吗? 姑娘果一年四季都可以买得到吗? 拔罐注册商标属于哪一类? SPA治疗和服务注册商标属于哪一类? 东北“红姑娘”红姑娘"的药用价值 关东有一种植物,名叫红姑娘儿就听这名字,也只有关东人能起得出来,一 桑拿蒸汽浴室注册商标属于哪一类? 足浴粉属于哪类商标 梦见自己开车爸爸的豪华白色越野车带闺蜜玩? 跪求人生波动2017免费百度云资源 跪求人生波动2017年百度云资源,尤拉萨雅·斯帕邦德主演的 斯科特诉桑福德案的相关历史 卡森.皮雷与斯科特大楼的简介,200字以上 外国有哪些探险家? 温菲尔德·斯科特·汉考克的内战 德雷德·斯科特的奴隶身份案件对于美国历史的意义是什么? 跪求好心人分享半血缘兄弟 2020年由路易斯·赫拉尔多·门德斯主演的免费高清百度云资源 罗伯特.路易斯.史蒂文森的个人简介 手机越狱后还可以还原吗 iphone越狱后能还原吗 越狱后的手机刷机后能重新回到为越狱的状态么 苹果手机越狱后可以还原吗还原是怎样的 photoshop怎么安装破解 华为手机用指纹锁屏开不了机怎么办? 华为nova5pro屏下指纹息屏后拿在手里一直亮是否正常 怎么查对方的什么时候注册的 怎么查别人注册多长时间? 怎么看出对方是什么时候注册的