Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在jdbc应用程序中连接mysql服务器的正确方式是什么?_Java_Jdbc - Fatal编程技术网

Java 在jdbc应用程序中连接mysql服务器的正确方式是什么?

Java 在jdbc应用程序中连接mysql服务器的正确方式是什么?,java,jdbc,Java,Jdbc,我有一个数据库,其中有几个注册用户,他们使用jdbc通过java应用程序访问数据库。我在其他地方读到过,连接应该在尽可能短的时间内打开和关闭,大多数时间与您正在执行的语句或查询在同一个try块中。然而,这意味着我应该将用户和密码存储在程序内存中,并重复使用它来创建新的连接;但是,在程序内存中存储密码不存在安全问题吗?您应该如何建立到数据库的新连接?我想您的问题不是关于如何编写数据库连接的代码 这实际上取决于您的用户是否已向数据库注册了id,或者您只有一个非人类id用于程序连接并为所有用户提供服务

我有一个数据库,其中有几个注册用户,他们使用jdbc通过java应用程序访问数据库。我在其他地方读到过,连接应该在尽可能短的时间内打开和关闭,大多数时间与您正在执行的语句或查询在同一个try块中。然而,这意味着我应该将用户和密码存储在程序内存中,并重复使用它来创建新的连接;但是,在程序内存中存储密码不存在安全问题吗?您应该如何建立到数据库的新连接?

我想您的问题不是关于如何编写数据库连接的代码

这实际上取决于您的用户是否已向数据库注册了id,或者您只有一个非人类id用于程序连接并为所有用户提供服务。如果是前者,您可以以某种方式提示用户输入一次密码,将其存储在变量中,使用变量进行连接,使用后断开连接,如果需要,重新连接/断开连接。密码只会动态存储在内存中,在程序结束后不再存在,因此它是安全的

如果是后者,那么最好让程序在web/servlet服务器上运行,并且像Luiggi所说的那样,使用连接池。在这种情况下,连接密码将在某些配置文件中编码,并且只能由服务器管理员访问。如果您不能拥有这样的服务器,您必须返回到上面段落中的解决方案,并在数据库中注册所有用户,每个用户都有自己的id和密码

希望能有帮助

我在别处读到过,连接应该在中打开和关闭 尽可能短的时间

交易应在尽可能短的时间内完成。不断地打开和关闭连接会产生大量的网络开销。 但是,如果使用连接池,打开和关闭连接只会导致从池中获取连接并将连接释放回池中。在这种情况下,应尽可能快地打开和关闭连接,以便其他进程/线程可以重新使用该连接。连接池本身为您管理网络连接的实际打开和关闭,以及其他有用的功能,如确保您关闭结果集、关闭准备好的语句、保持连接健康等。。
无论是从客户端应用程序还是应用程序服务器使用数据库连接,使用连接池都是有益的。我已经在一篇文章中对此进行了解释。

使用数据库连接池。此软件将初始化连接并为您关闭它们。