java - 将 SQL Server 与 Java (javafx) 连接

标签 java javafx

我有以下用于连接 SQL Server 和 Java 的设置。我也在使用 javafx。我对使用 Java 进行开发非常陌生。注意:我添加了 sqljdbc 驱动程序。我不想将 main 添加到 DBConnection,因为我在 Controller 中使用 Connection 方法。有没有办法解决这个问题,或者如何在不更改连接方法的情况下添加主要方法?我收到错误消息:

错误信息

Error: Main method not found in class application.ConnectionDB, please define the main method as:
 public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application

FXML

 <?xml version="1.0" encoding="UTF-8"?>
 <?import javafx.scene.control.Button?>
 <?import javafx.scene.control.Label?>
 <?import javafx.scene.control.TextField?>
 <?import javafx.scene.layout.AnchorPane?>

 <AnchorPane fx:controller="application.MainController" prefHeight="407.0"  prefWidth="578.0" xmlns="http://javafx.com/javafx/10.0.1"   xmlns:fx="http://javafx.com/fxml/1">
 <children>
  <Label layoutX="123.0" layoutY="65.0" prefHeight="31.0" prefWidth="79.0"  text="Date:" />
  <Label layoutX="123.0" layoutY="138.0" prefHeight="25.0" prefWidth="127.0" text="Rim Current Value:" />
  <Label layoutX="125.0" layoutY="210.0" text="Rim Sales Value for the  Month:" />
  <Label layoutX="123.0" layoutY="283.0" text="Rim Sold Cost Bought:" />
  <TextField fx:id="txtdate" layoutX="123.0" layoutY="97.0" />
  <TextField fx:id="txtcurvalue" layoutX="123.0" layoutY="163.0" />
  <TextField fx:id="txtsalesvalue" layoutX="123.0" layoutY="234.0" />
  <TextField fx:id="txtsoldcost" layoutX="123.0" layoutY="300.0" />
  <Button layoutX="246.0" layoutY="340.0" mnemonicParsing="false"      onAction="#Rmsubmit" prefHeight="25.0" prefWidth="103.0" text="Submit" />
  </children>
 </AnchorPane>

连接类

package application;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;


public class ConnectionDB
    {


 public static Connection dbConn() {
     Connection conn = null;
    try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        String url = "jdbc:sqlserver:[server name];database=SalesManager;user=[username];password=[password];encrypt=true;trustServerCert ificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30";
         conn = DriverManager.getConnection(url);
    }
     catch (ClassNotFoundException | SQLException ex) {
          Logger.getLogger(ConnectionDB.class.getName()).log(Level.SEVERE,null,ex);

    }
    return conn;
}
 }

Controller

 package application;

 import javafx.event.ActionEvent;
 import javafx.fxml.FXML;


 import javafx.scene.control.TextField;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.SQLException;
 import java.util.ResourceBundle;
 import javax.print.DocFlavor.URL;

 public class MainController  {
@FXML
public TextField txtdate;
@FXML
public TextField txtcurvalue;
@FXML
public TextField txtsalesvalue;
@FXML
public TextField txtsoldcost;

public Connection conn =null;
public PreparedStatement pat = null;

@FXML
public void Rmsubmit(ActionEvent actionEvent) {



    String sqla = "Insert into RimCalc(Date, Rim_Vale,Rim_Sales,Rim_Cost) Values (?,?,?,?)";
    String date = txtdate.getText();
    String rim_value = txtcurvalue.getText();
    String Rim_Sales = txtsalesvalue.getText();
    String rim_cost = txtsoldcost.getText();



    try {
        pat = conn.prepareStatement(sqla);
        pat.setString(1, date);
        pat.setString(2, rim_value);
        pat.setString(3, Rim_Sales);
        pat.setString(4, rim_cost);

        int i = pat.executeUpdate();
        if(i==1) {
            System.out.println("Insert Successfully");
        }
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }



}

public void initializer(URL url, ResourceBundle rb) {
    conn = application.ConnectionDB.dbConn();
}

}

最佳答案

Java 程序需要一个main 方法作为入口点才能运行。 main 方法的标准定义如下:

public static void main(String[] args) {
  // First code of your program goes here
}

main() 方法应包含启动您的应用程序并加载任何界面元素以供显示的代码。

JavaFX 应用程序还需要有一个扩展 Application 并覆盖其 start() 方法的类。

这是一个这样的类的一个非常快速和肮脏的例子:

import javafx.application.Application;
import javafx.stage.Stage;

class Main extends Application {
    public static void main(String[] args) {
        launch(args);   // Starts the JavaFX application and calls the start() method
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        // Here is where you'll initialize your views and such
    }
}

I would recommend taking a few Java and JavaFX tutorials to get a feel for some of the basics before attempting more complicated tasks like connecting to databases.

关于java - 将 SQL Server 与 Java (javafx) 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55253092/

相关文章:

java - 如何正确关闭 Derby 内存数据库

javafx.scene.input.KeyCombination 为 "Crtl++"

java - cURL命令上传文件不上传文件

java - 覆盖 tostring()

java - 如何创建这个循环,使输出与输入相同,除非我按 "end"然后程序结束?

java - 如何在 Java 中启动 PDF 文件?

javascript - 浏览器端代码编辑器组件

JavaFx布局: disappearing/unorganized panes

JavaFX:SceneBuilder 的渲染问题

java - 在 Java 之前编译 Groovy 后,Grails 应用程序(配置文件rest-api)陷入困惑