我使用Eclipse在JavaFx中创建了一个SQLite数据库。创建和访问数据库的功能如下所示。我使用导出选项创建了可运行的jar。我尝试了两种方法:方法1:使用Inno创建安装程序。然后将应用程序安装在另一台笔记本电脑上进行测试。已成功安装并启动。问题是没有创建数据库。然而,它在Eclipse内部的笔记本电脑中运行得很好。方法2:在创建安装程序时,我在Inno中包含了来自基于Eclipse的文件夹的数据库文件以及应用程序JAR。包含数据库文件的exe安装在另一台笔记本电脑上。安装和应用程序启动成功。问题是显示了数据库中已经存在的表格条目。但是,没有插入新条目和删除现有条目。项目结构如图所示。
public static Connection getConnection() {
Connection conn = null;
Statement stmt = null;
try {
String dbName = "patientdata";
File file = new File (dbName);
//Class.forName("com.html" target="_blank">mysql.cj.jdbc.Driver");
//conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/"+dbName,"root","");
if(file.exists())System.out.println("patient file exists: "+ file.getAbsolutePath());
else System.out.println("patient file not exist: Creaeted new one ");
try{
Class.forName("org.sqlite.JDBC");
//conn = DriverManager.getConnection("jdbc:sqlite:"+dbName,"root","");
conn = DriverManager.getConnection("jdbc:sqlite:"+dbName);
System.out.println("data base connection established: "+ conn.toString());
stmt = conn.createStatement();
String pat = "CREATE TABLE if not exists newpatient " +
"(patientId INTEGER NOT NULL," +
" patientName CHAR(50) NOT NULL, " +
" patientAge INTEGER NOT NULL, " +
"patientGender CHAR(10) NOT NULL,"+
"patientAddress CHAR(100) NOT NULL,"+
"patientMobile BIGINT(10) NOT NULL)";
System.out.println("newpatient Table Created: ");
stmt.executeUpdate(pat);
stmt.close();
stmt = conn.createStatement();
String hist = "CREATE TABLE if not exists history " +
"(id INTEGER NOT NULL," +
" date DATE NOT NULL, " +
" start TIME NOT NULL, " +
"stop TIME NOT NULL)";
System.out.println("history Table Created: ");
stmt.executeUpdate(hist);
stmt.close();
Dialog<Void> pop = new Dialog<Void>();
pop.setContentText("Data base accessed");
pop.getDialogPane().getButtonTypes().add(ButtonType.CLOSE);
Node closeButton = pop.getDialogPane().lookupButton(ButtonType.CLOSE);
closeButton.setVisible(false);
pop.showAndWait();
}catch(SQLException tb){
System.err.println(tb.getClass().getName() + ": " + tb.getMessage());
Dialog<Void> pop = new Dialog<Void>();
pop.setContentText("Data base not accessed");
pop.getDialogPane().getButtonTypes().add(ButtonType.CLOSE);
Node closeButton = pop.getDialogPane().lookupButton(ButtonType.CLOSE);
closeButton.setVisible(false);
pop.showAndWait();
}
}catch(Exception e)
{
//System.out.println("errors to Create Data Base : "+e.getMessage());
System.err.println(e.getClass().getName() + ": " + e.getMessage());
}
return conn;
}
private void insertrecord()
{
try{
String query ="INSERT INTO `newpatient`(patientId,patientName,patientAge,patientGender,patientAddress,patientMobile)"+
"VALUES("+ newpatient_id.getText() +",'" + newpatient_name.getText() + "','"+ newpatient_age.getText() + "',"
+ "'"+ selectedGender + "','"+ newpatient_address.getText() + "',"+ newpatient_mobile.getText() +")";
System.out.println(gender);
executeQuery(query);
System.out.println("Saved");
Main.selected_patient_id = Integer.parseInt(newpatient_id.getText());
}
catch(Exception e) {
System.out.println("Execption in Save");
e.printStackTrace();
}
}
private void executeQuery(String query) {
Connection conn= getConnection();
Statement st;
try {
st = conn.createStatement();
st.executeUpdate(query);
}catch(Exception e){
e.printStackTrace();
}
}
@FXML
private void btnFetchHistory(ActionEvent event) {
try {
Existpatcontrol existpat_controller = new Existpatcontrol();
FXMLLoader loader1 = new FXMLLoader();
loader1.setController(existpat_controller.getTvHistory());
//URL urlext = loader1.getClass().getClassLoader().getResource("Historypat.fxml");
//Parent root1 = FXMLLoader.load(urlext);
loader1.setLocation(getClass().getResource("Historypat.fxml"));
Parent root1 = loader1.load();
Stage stage1 = new Stage();
stage1.setTitle("History");
stage1.setScene(new Scene(root1));
stage1.show();
}catch (Exception hs) {
System.out.println("errors"+hs.getMessage());
try {
PrintStream ps = new PrintStream(Main.test_file);
hs.printStackTrace(ps);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("errors"+e.getMessage());
}
}
}
在此输入图像描述
在此处输入图像描述在此处输入图像描述
问题得到了解决。我认为jdbc:sqlite在安装应用程序的同一文件夹中创建数据库文件,而这样的文件夹是写保护的。我传递了一个固定路径作为jdbc:sqlite:c://appdata/database.db
笔记本电脑的键盘+触摸板能否作为另一台主机的输入(替代键鼠)? 笔记本是MacBook Pro,接口是雷厉4;另一台主机是深信服的瘦终端,接口是USB;
问题内容: 我正在尝试制作看起来不像tkinter应用程序的tkinter应用程序。我使用的是ttk笔记本,并且在选中选项卡时,这些选项在文本的周围都有一点点虚线。它看起来很糟糕,我找不到使用样式或配置删除它的方法。这是要说明的屏幕截图: 编辑代码(我认为这不会有很大帮助,因为我实际上只是在尝试删除默认样式的东西。): 这是笔记本的创建: 填写: 相关样式: 问题答案: 您可以通过更改选项卡小部件
我通过Anaconda找到了iPython笔记本。我不小心删除了一个重要的笔记本,但我似乎在垃圾箱里找不到它(我认为iPy笔记本不会被扔进垃圾箱)。 有人知道我怎样才能找回笔记本吗?我正在使用MacOSX。 谢谢
我使用命令启动了一个图像 我相信是images的目录的本地挂载点。但是我不能在我的笔记本电脑上fid这个目录。docker在哪里创建vertica数据目录?
已在远程linux计算机上安装了Anaconda Python。 在本地Windows上使用puty登录到远程linux机器以远程启动Ipython笔记本。它从8888端口开始。 遥远的_user@remote_host$ipython笔记本电脑--无浏览器--端口=8888 现在我需要在本地浏览器上访问这个笔记本。尝试过做ssh隧道。 C:\用户\windowsUser SSH:连接到主机rem
可将游戏等应用程序输入PS Vita,或输出至电脑。 需事先进行以下操作。 将PS Vita专用的存储卡插入PS Vita 操作PS Vita注册PlayStation®Network账号 若持有在PS3™或电脑创建的账号,可直接使用该账号。 操作电脑与互联网连接 操作电脑下载/安装PlayStation®内容管理助手 可在以下网站进行下载。 http://cma.dl.playstation.n