每次将软件分发给新用户时都手动为软件创建新数据库?
creating new database manually for a software every time while distributing it to a new user?
我使用 java 制作了一个基于桌面的商店管理软件,它将通过互联网 (phpmyadmin) 在数据库中保存每个产品细节和特定商店的销售历史。我制作了一个连接器 class 并给出了连接到数据库的数据库名称的路径。问题是,对于每个不同的商店,我需要创建一个不同的数据库。如果我制作我的软件的 .exe 文件或安装文件并将其分发给用户,我将如何通过安装过程为每个用户(在本例中为每个商店)创建不同的数据库。有什么方法可以动态地执行此操作,或者我每次都必须在将其分发给新用户(实际上是新商店)之前创建数据库?
提前致谢,
我从不制作用于商业分发的软件。这对我来说是新的。
注1:让我解释一下我的问题,
先看看我的连接器class
public class ispConnect {
static Connection connection;
public static Connection connecterDb(){
try{
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://ServeName/DatabaseName","root","");
System.out.println("Connection Established!");
return connection;
}catch(Exception e){
System.out.print("Connection Failed!");
return null;
}
}
这是连接数据库 "DatabaseName" 的连接器 class。现在,如果我制作安装程序文件,我无法更改 "DatabaseName"。假设我有两个客户 X、Y,他们都需要我的申请。对于他们两个,我需要创建两个数据库名称 - 让 DatabaseName1 为 X 和 DatabaseName2 为 Y 否则他们的数据都将保存到同一个数据库中 - "DatabaseName" 。现在我的问题是,我是否必须每次都为每个客户手动更改数据库名称,然后在将我的应用程序交付给他们之前再次制作安装程序,或者还有其他选择!
您可以捆绑创建所需数据库结构的脚本,因此,简而言之,当您的应用程序将尝试连接到数据库,但未找到数据库时,它将 运行 一个预定义的将创建所有必要结构的脚本。
您可以扩展上述功能以在应用程序无法找到数据库时创建数据库,但是,如果您在哪里选择此选项,我建议首先向用户显示一个弹出窗口,通知他们发生了什么,你会怎么做。
是的,可以动态创建数据库。 SQL 语言允许这样做,您可以使用 java.
调用 SQL 表达式
在SQL中创建数据库MyDatabase
你需要调用:
CREATE DATABASE MyDatabase
在 java 中,您可以使用以下代码完成此操作:
Connection conn = DriverManager.getConnection("jdbc:mysql://databasehost/?user=root&password=rootpassword");
Statement statement = conn.createStatement();
int result=statement.executeUpdate("CREATE DATABASE MyDatabase");
注意SQL是强大的语言,还可以add/remove用户,grant/revoke访问权限等等。您可以使用 Java 代码调用 SQL 表达式。
检查此 link MySQL SQL 参考:http://dev.mysql.com/doc/refman/5.6/en/sql-syntax.html
更新 №1:
请注意,databasehost
、root
用户名和密码不应硬编码。您的应用程序应该在第一次启动时询问此信息以生成数据库。
更新№2:
如果您为您的应用程序的客户提供 MySQL 服务器基础设施,并且不要求客户在他们的计算机上部署和使用单独的独立 MySQL 实例,那么您需要一个有点不同的方法。
在销售您的应用程序许可证后,使用您的客户提供的信息自动生成(例如使用 PHP)MySQL 数据库。之后向您的客户提供 username/password 和数据库名称以访问您的服务器。
当您的应用程序启动时,它会询问这些数据库名称,username/password,客户在启动时指定此信息并开始使用您的产品。
作为提供更多便利的选项,因为您已经生成了服务器数据库、用户名和密码,将此信息保存在(加密的)设置文件中,并与应用程序一起提供,客户将要下载。
更新 №3
不要将数据库名称、登录名和密码硬编码到您的 java 代码中。声明变量:
String dbName;
String username;
String password;
然后使用这些变量连接到您的数据库,就像这样:
connection = DriverManager.getConnection("jdbc:mysql://ServeName/" + dbName, username, password);
将 dbName、用户名和密码存储在 separate text file, and let your java code to read this text file 中,以填充 dbName
、username
和 password
变量。
当用户要下载购买的软件时,您可以生成此文本文件(也称为 Java Properties file)。您,在服务器端,使用 PHP,应该生成数据库、用户名和密码,并将此信息(dbName、用户名和密码)写入文本文件。
您可以使用 PHP 创建和填充文本文件。这是教程:
http://www.w3schools.com/php/php_file_create.asp
创建文本文件后,您可以将其与 exe 文件一起压缩,也可以使用 PHP,这是简短的操作方法:Creating .zip file
希望这对您有所帮助:)
我使用 java 制作了一个基于桌面的商店管理软件,它将通过互联网 (phpmyadmin) 在数据库中保存每个产品细节和特定商店的销售历史。我制作了一个连接器 class 并给出了连接到数据库的数据库名称的路径。问题是,对于每个不同的商店,我需要创建一个不同的数据库。如果我制作我的软件的 .exe 文件或安装文件并将其分发给用户,我将如何通过安装过程为每个用户(在本例中为每个商店)创建不同的数据库。有什么方法可以动态地执行此操作,或者我每次都必须在将其分发给新用户(实际上是新商店)之前创建数据库?
提前致谢, 我从不制作用于商业分发的软件。这对我来说是新的。
注1:让我解释一下我的问题, 先看看我的连接器class
public class ispConnect {
static Connection connection;
public static Connection connecterDb(){
try{
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://ServeName/DatabaseName","root","");
System.out.println("Connection Established!");
return connection;
}catch(Exception e){
System.out.print("Connection Failed!");
return null;
}
}
这是连接数据库 "DatabaseName" 的连接器 class。现在,如果我制作安装程序文件,我无法更改 "DatabaseName"。假设我有两个客户 X、Y,他们都需要我的申请。对于他们两个,我需要创建两个数据库名称 - 让 DatabaseName1 为 X 和 DatabaseName2 为 Y 否则他们的数据都将保存到同一个数据库中 - "DatabaseName" 。现在我的问题是,我是否必须每次都为每个客户手动更改数据库名称,然后在将我的应用程序交付给他们之前再次制作安装程序,或者还有其他选择!
您可以捆绑创建所需数据库结构的脚本,因此,简而言之,当您的应用程序将尝试连接到数据库,但未找到数据库时,它将 运行 一个预定义的将创建所有必要结构的脚本。
您可以扩展上述功能以在应用程序无法找到数据库时创建数据库,但是,如果您在哪里选择此选项,我建议首先向用户显示一个弹出窗口,通知他们发生了什么,你会怎么做。
是的,可以动态创建数据库。 SQL 语言允许这样做,您可以使用 java.
调用 SQL 表达式在SQL中创建数据库MyDatabase
你需要调用:
CREATE DATABASE MyDatabase
在 java 中,您可以使用以下代码完成此操作:
Connection conn = DriverManager.getConnection("jdbc:mysql://databasehost/?user=root&password=rootpassword");
Statement statement = conn.createStatement();
int result=statement.executeUpdate("CREATE DATABASE MyDatabase");
注意SQL是强大的语言,还可以add/remove用户,grant/revoke访问权限等等。您可以使用 Java 代码调用 SQL 表达式。
检查此 link MySQL SQL 参考:http://dev.mysql.com/doc/refman/5.6/en/sql-syntax.html
更新 №1:
请注意,databasehost
、root
用户名和密码不应硬编码。您的应用程序应该在第一次启动时询问此信息以生成数据库。
更新№2:
如果您为您的应用程序的客户提供 MySQL 服务器基础设施,并且不要求客户在他们的计算机上部署和使用单独的独立 MySQL 实例,那么您需要一个有点不同的方法。
在销售您的应用程序许可证后,使用您的客户提供的信息自动生成(例如使用 PHP)MySQL 数据库。之后向您的客户提供 username/password 和数据库名称以访问您的服务器。
当您的应用程序启动时,它会询问这些数据库名称,username/password,客户在启动时指定此信息并开始使用您的产品。
作为提供更多便利的选项,因为您已经生成了服务器数据库、用户名和密码,将此信息保存在(加密的)设置文件中,并与应用程序一起提供,客户将要下载。
更新 №3
不要将数据库名称、登录名和密码硬编码到您的 java 代码中。声明变量:
String dbName;
String username;
String password;
然后使用这些变量连接到您的数据库,就像这样:
connection = DriverManager.getConnection("jdbc:mysql://ServeName/" + dbName, username, password);
将 dbName、用户名和密码存储在 separate text file, and let your java code to read this text file 中,以填充 dbName
、username
和 password
变量。
当用户要下载购买的软件时,您可以生成此文本文件(也称为 Java Properties file)。您,在服务器端,使用 PHP,应该生成数据库、用户名和密码,并将此信息(dbName、用户名和密码)写入文本文件。
您可以使用 PHP 创建和填充文本文件。这是教程: http://www.w3schools.com/php/php_file_create.asp
创建文本文件后,您可以将其与 exe 文件一起压缩,也可以使用 PHP,这是简短的操作方法:Creating .zip file
希望这对您有所帮助:)