这可能是一个愚蠢的问题,但我是新的.
我想创建一个与数据库通信的Windows程序.如果没有我的程序用户必须安装像MySql这样的数据库程序,有没有办法做到这一点?
我打算用C#编程.
你能推荐我可以嵌入Neo4j这样的应用程序进程的GraphDB,但必须是免费的商业用途,必须支持C#或Java吗?
谢谢你的建议!
你知道一些开源非常小的SQL服务器实现可能在1*.c(或几个)文件中没有外部依赖吗?实现应该是非常基础的 - 支持大多数简单形式的select/insert/delete/update ...不需要DDL(虽然它会很好).只有基本的1个用户at-a-timer操作 - (不需要多用户模式或解析db锁).只需在1 db文件上运行(可能在文本模式下).?? 来源必须是标准便携式C.
很感谢 !
根据这个文件:
29.1.1嵌入式数据库支持
Spring Boot可以自动配置嵌入式H2,HSQL和Derby数据库.您不需要提供任何连接URL,只需包含对要使用的嵌入式数据库的构建依赖关系.
和
29.1.2连接到生产数据库
还可以使用池化DataSource自动配置生产数据库连接.
DataSource配置由spring.datasource.*中的外部配置属性控制.例如,您可以在application.properties中声明以下部分:
spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
Run Code Online (Sandbox Code Playgroud)
[Tip]您通常不需要指定driver-class-name,因为Spring引导可以从url中为大多数数据库推断出它.
[注意]对于要创建的池化DataSource,我们需要能够验证有效的Driver类是否可用,因此我们在执行任何操作之前检查它.即如果你设置 spring.datasource.driver-class-name = com.mysql.jdbc.Driver,那么该类必须是可加载的.
如果我将以下内容放在application.properties文件中,该怎么办:
spring.datasource.url=jdbc:hsqldb:file:db/organization-db
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring.datasource.driver-class-name=org.hsqldb.jdbc.JDBCDriver
Run Code Online (Sandbox Code Playgroud)
Spring Boot会自动配置池数据源吗,因为我指定了spring.datasource.driver-class-name?
或者它只是为没有连接池的嵌入式数据库驱动程序创建数据源?
如何确认Spring Boot是否正在使用连接池?
我编写基于Java SE 8的桌面应用程序。它有我的应用程序附带的Derby DB (v10.13.1.1)。我使用Hibernate ORM框架 (v5.2.10.Final) 与 DB 进行通信,并使用Spring框架 (spring-orm @ v4.3.7.RELEASE),这也有助于它。
如果我一次将我的应用程序作为一个实例运行,一切都很好 - 数据库不会引起任何问题。但是,如果我创建应用程序的多个实例,或者同时使用数据库客户端 DBeaver 访问数据库,则会导致以下异常:
[AWT-EventQueue-0] DEBUG (124 : 2017-07-28 22:14:57,245) org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Unable to acquire JDBC Connection [n/a]
java.sql.SQLException: Failed to start database 'M_Vezelis_Draw_DB_1_6v.db' with class loader sun.misc.Launcher$AppClassLoader@73d16e93, see the next exception for details.
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.seeNextException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source)
at org.apache.derby.jdbc.InternalDriver$1.run(Unknown Source)
at org.apache.derby.jdbc.InternalDriver$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at …Run Code Online (Sandbox Code Playgroud) 我在嵌入式模式下使用 Apache NetBeans IDE 11.3(带有 JDK 13)和 Derby。连接数据库时出现以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/derby/iapi/jdbc/JDBCBoot
at org.apache.derby.jdbc.EmbeddedDriver.<clinit>(EmbeddedDriver.java:95)
at Testing.testConnection.main(testConnection.java:15)
Caused by: java.lang.ClassNotFoundException: org.apache.derby.iapi.jdbc.JDBCBoot
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 2 more
Run Code Online (Sandbox Code Playgroud)
以下是代码:
package Testing;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.apache.derby.jdbc.EmbeddedDriver;
public class testConnection {
public static void main(String[] args) {
try {
DriverManager.registerDriver(new EmbeddedDriver());
Connection con = DriverManager.getConnection("jdbc:derby:testdb;create=true");
Statement stmt = con.createStatement();
stmt.execute("create table test(id int(2) primary key, name varchar not null);");
stmt.execute("insert into …Run Code Online (Sandbox Code Playgroud) 希望我能很清楚地表达出来:我将多年前从VB6(我知道,我知道!)的应用程序移植到C++/Qt.在我的原始应用程序中,我喜欢的一件事是我不需要运行实际的SQL服务器,我只能使用MS Access .mdb文件.我想知道Qt是否存在类似的东西,它可以在多个操作系统上运行 - 一个存储在文件中的数据库,但是我仍然可以运行SQL查询.不确定是否存在这样的事情,但是感谢任何帮助,谢谢!
您是否知道任何具有外键约束和/或提供事务支持的SQLite替代方案(基于Portable/flatfile /无服务器)?
我的要求是
请建议我一个具有上述功能的数据库,以及一些关于这方面的好教程的指示.
我的目标是创建一个可以使用Java读取和写入的本地数据库.我有一些使用Python操作本地sqlite数据库的经验,并通过VB.Net与Microsoft Azure上的现有网络数据库进行交互,但是用于创建数据库的Java公式正在逃避我.
大多数源(如JDBC Docs)似乎假设您通过网络协议或localhost上托管的数据库访问数据库.我期望的实现是在文件(或文件集合)中创建和存储数据库,以便可以在本地存储和访问它,而无需网络连接(可通过"文件:"协议).
该JDBC教程看起来像一次我运行起来将是非常有用的,但目前是超出了我的范围,因为我甚至不具有现有的数据库呢.
许多 消息来源提出了H2,MySQL,Derby或Hypersonic DB等解决方案.但是,由于以下原因,我不愿意安装扩展程序(如果这是正确的术语):
出于类似的原因,安装Microsoft SQL Server效率不高.
这个答案看起来很接近我的目标; 但是,它给出了错误:
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/?user=root&password=rootpassword
Run Code Online (Sandbox Code Playgroud)
并尝试"jdbc:file://targetFile.sql"给出类似的错误.
我已经看到术语"嵌入式"数据库,我认为这是"本地数据库"的一个子集(即本地数据库存储在同一系统中 - 嵌入式数据库是仅由单个应用程序使用的本地数据库) - 如果我的定义有误,请随时纠正我!
我必须构建一个存储数据并能够操作数据的 Windows 桌面应用程序,但问题是,我无法决定使用哪个数据库?
我需要该应用程序是独立的,以便客户端 PC 上至少不需要安装其他软件(windows vista 到 10)。
我需要该应用程序能够导出数据并将数据库连接到云。
我使用 C# 作为语言,WPF 作为用户界面平台。
我读了这个问题,它几乎涵盖了我的要求。
但是由于Sql Compact Edition在 2013 Visual Studio 版本之后折旧,我不确定该使用什么。
我也阅读了这个答案,它涵盖了相同的内容,但我不确定这意味着什么,如果我使用Microsoft SQL Server作为数据库并将MS SQL Server Express(最新的,仅限数据库)嵌入我的应用程序,这是否意味着我不需要明确设置服务器。
如果我确实遵循这种做法,那么在做出这个选择之前我可能需要考虑的其他事情是什么。
并且要清楚我正在使用Visual Studio 2015 社区,并且我一直在使用基于服务的数据库来创建一个.mdf文件,我喜欢这种方法,我问这个问题的主要焦点是,如果我继续使用相同的方法(基于服务的数据库)并在我的应用程序中嵌入 **MS SQL Server Express(仅限 ** 数据库),我可以接受上面的 1、2、3、4 点吗?
请提供对此问题的任何见解。
我无法在不知道有人已经完成并且有效的情况下做出决定。
database ×4
java ×3
c# ×2
derby ×2
jdbc ×2
sql ×2
c ×1
c++ ×1
foreign-keys ×1
hibernate ×1
java-8 ×1
jpa ×1
local ×1
neo4j ×1
netbeans ×1
nosql ×1
open-source ×1
qt ×1
spring-boot ×1
spring-jdbc ×1
spring-mvc ×1
spring-orm ×1
sql-server ×1
sqlite ×1
transactions ×1
wpf ×1