【发布时间】:2021-09-06 11:00:45
【问题描述】:
我正在编写一个 java 文件,该文件通过接受用户输入来创建用户名,然后将该用户名存储在 Microsoft SQL Server 数据库中。我的 SQL 家伙编写了许多存储过程来完成大部分繁重的工作,包括一个接受用户名并将其存储在数据库中的存储过程。我很难弄清楚我在哪里放置什么代码,特别是当我试图通过我正在做的事情逻辑思考我的方式时。我的示例代码如下:
import java.sql.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class CreateUsername {
public JFrame f = new JFrame("Account Login");
public JButton Submit = new JButton("Submit");
public JTextField user = new JTextField(30);
public CreateUsername() {
f.setSize(400, 400);
f.add(Submit);
f.add(user);
f.setLayout(null);
f.setVisible(true);
Submit.setBounds(50, 100, 195, 30);
user.setBounds(50, 130, 195, 30);
Submit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//closes the create username window when clicking submit
f.dispose();
}
public static void main(String[] args) throws Exception {
Class.forName(com.sqlserver.jdbc.Driver());
Connection con = DriverManager.getConnection(""); // insert database connection info between quotes
String sql_string = "CREATE PROCEDURE [dbo].[CreateUser] (\n" +
"\t@UserName varchar(30),\n" +
"\t@UserID int OUTPUT)\n" +
"AS\n" +
"\n" +
"DECLARE\t @return_value int\n" +
"\n" +
"\n" +
"INSERT INTO [dbo].[User]\n" +
" ([UserName])\n" +
" VALUES\n" +
" (@UserName)\n" +
"\n" +
"SELECT\t@UserID = SCOPE_IDENTITY()\n" +
"go";
CallableStatement cs = con.prepareCall(sql_string);
cs.execute();
显然代码不完整,但是当您查看代码时,一些问题会变得清晰。我主要关心的是处理连接到数据库的代码行的格式(我已经看到了一些如何做到这一点的示例,它们都略有不同,所以我很困惑)。此外,我一生无法弄清楚如何将可调用语句(存储过程)“附加”到适当的位置(也就是在按下提交按钮后,存储过程执行)。我有一个用户界面,我有一个存储过程,我想在用户输入他们的用户名并单击提交后执行它,但我不知道该怎么做。
我觉得我已经用尽了关于这个主题的谷歌搜索(这告诉我,我对某事的理解可能存在更根本的错误)。任何帮助将非常感激。同样,这段代码不会按原样编译,我知道这一点,我只需要如何继续的帮助。
提前谢谢你!
【问题讨论】:
-
存储过程需要在您的数据库中创建(与您的应用程序分开),然后您调用带有参数的存储过程并返回结果。
GO无论如何都不是命令,它是 SSMS 和 sqlcmd 中使用的批处理分隔符 -
是的,所有这些都是在数据库中创建的存储过程,通过intellij连接到所述数据库从数据库中检索。我在安排正确的语法来调用存储过程时遇到问题,我的代码是按原样排列的,因为这是我从多个示例/教程和数小时的谷歌搜索中得出的最好的结果。我知道我需要使用参数调用存储过程,但我的问题是我想了解,实际上,所有代码在做什么(我了解一些但不是全部,例如:Class.forName(com.sqlserver.jdbc.驱动程序());
-
我也看到有人使用 DriverManager.registerDriver(com.sqlserver.jdbc.Driver());而且我真的不明白其中任何一个的作用,如果需要它们,以及在我的情况下需要哪一个。谷歌搜索似乎没有帮助,因为解释对初学者不太友好。
标签: java sql-server stored-procedures