我有一个包含多个注册用户的数据库,它们使用jdbc通过java应用程序访问数据库。我在其他地方读过,应该在尽可能短的时间内打开和关闭连接,大部分时间都在与您正在执行的语句或查询相同的尝试块中。然而,这意味着我应该将用户和密码存储在程序存储器中,并重复使用它来创建新的连接;但是在程序存储器中存储密码是否存在安全问题?应该如何建立与数据库的新连接?
答案 0 :(得分:0)
我认为你的问题不是关于如何编码数据库连接。
这实际上取决于您的用户是否已在数据库中注册了ID,或者您只有一个ID(非人)用于程序连接并为所有用户提供服务。如果是前者,您可以以某种方式提示用户输入一次密码,将其存储在变量中,使用变量进行连接,使用后断开连接,如果需要则重新连接/断开连接。密码只是在运行中“存储”在程序结束后不再存在,所以它是安全的。
如果是后者,那么最好让你的程序在web / servlet服务器上运行,就像Luiggi所说的那样,使用连接池。在这种情况下,连接密码将在某些配置文件中编码,并且只能由服务器的管理员访问。如果你不能拥有这样的服务器,你必须回到上面的解决方案,并在数据库中注册所有用户,每个用户都有自己的ID和密码。
希望它有所帮助。
答案 1 :(得分:0)
我在其他地方读到应该打开和关闭连接 尽可能短的时间
交易应该在尽可能短的时间内完成。不断打开和关闭连接会产生大量(网络)开销。
但是,如果使用连接池,则仅打开和关闭连接会导致从池中获取连接并将连接释放回池中。在这种情况下,应尽可能快地打开和关闭连接,以便其他进程/线程可以重用连接。连接池本身管理实际打开和关闭(网络)连接,以及其他有用的功能,如确保关闭结果集,关闭预准备语句,保持连接健康等。
无论是从客户端应用程序还是应用程序服务器使用数据库连接,使用连接池都是有益的。我已在previous answer中解释了这一点。