下面的代码返回一个错误,它不会连接到SQlite db。
public class CardDatabase {
private String dataBaseName;
public CardDatabase(String dataBaseName) {
this.dataBaseName = dataBaseName;
}
String databaseUrl = "jdbc:sqlite:./" + dataBaseName; // Value 'dataBaseName' is always 'null'
SQLiteDataSource dataSource = new SQLiteDataSource();
虽然下面的代码工作得很好。
public class CardDatabase {
private String dataBaseName;
public CardDatabase(String dataBaseName) {
this.dataBaseName = dataBaseName;
}
SQLiteDataSource dataSource = new SQLiteDataSource();
String databaseUrl = "jdbc:sqlite:./" + dataBaseName; // swaped two lines
你能帮我了解一下这两个代码之间的区别吗?为什么第一个不能编译?
String databaseUrl=“jdbc:sqlite:./”数据库名
在执行构造函数之前初始化。
这意味着它将始终使用
null
,因为dataBaseName
尚未初始化。
但是可以将初始化移到构造函数中。最好将字段放在构造函数之前,如果您从未重新分配它们,可以将它们设置为
final
,这意味着不能覆盖:
public class CardDatabase {
private final SQLiteDataSource dataSource = new SQLiteDataSource();
private final String dataBaseName;
private final String databaseUrl;
public CardDatabase(String dataBaseName) {
this.dataBaseName = dataBaseName;
this.databaseUrl = "jdbc:sqlite:./" + dataBaseName;
}
}
关于您收到的错误:这可能只是您的IDE没有足够深入地分析您的代码,它可以检查
dataBaseName
在SQLiteDataSource dataSource=new SQLiteDataSource()行之后仍然是
null
;
我已经部署了一个在WebSphere8.5.5.10IBM上使用Hibernate的应用程序。hibernate-jpa依赖项提供了作用域,因为WebSphere默认拥有它。该应用程序工作,但我得到以下警告,不能摆脱它。 有人能帮忙吗?
问题内容: 我在做什么 : 我预期的输出: 平均=(10 + 20 + 30)/ 5 = 12 MYSQL的输出: 平均值=(10 + 20 + 30)/ 3 = 20 理想情况下,我想要的是MYSQL应该得到5行的总和并除以5,但是它只能除以3(非NULL行) 为什么会发生这种情况,我该怎么做才能获得正确的AVG,即60/5?PS:我不能使标记字段NOT NULL,在我的数据库设计中,标记字段允
问题内容: 在我的JS App中,我有许多Ajax调用。我正在使用最新的Chrome浏览器,并且最近在控制台中显示以下警告。 不赞成在主线程上使用同步XMLHttpRequest,因为它会对最终用户的体验产生不利影响。如需更多帮助,请访问http://xhr.spec.whatwg.org/。 现在,我正在尝试将所有内容更改为。但这会导致很多错误,因为我的应用需要与一起运行。 警告只是错误还是其他
我在Java中有一个值总是null,但我不明白为什么,因为我正在使用类构造函数设置变量的值。 我有这样的代码: 然后是以下内容: 出于某种原因,IntelliJ IDEA说cfgFilePath总是null。我正在用驱动程序类构造函数初始化它,那么为什么它是空的呢?当我运行程序时,我得到一个空指针异常。
输入df。mean() 输出: 输入 (正确)输出: “a”中的类型值col=int 其他col具有str值 为什么会发生这种情况
我将数据保存到会话中,但是我尝试将其读回,结果为空。Spring MVC是我的后端,Angular 4是前端。 爪哇: 角: 你知道我错过了什么吗?也许是CORS的事?