我需要一个用于我们的.net应用程序的嵌入式数据库.
这个数据库应该支持sql(与Berkley不同).
任何人都可以建议任何选择
我通常使用实时服务器进行开发,但是我第一次想到我会实现这一目标,看看我是否可以将所有(C++)mysql代码作为嵌入式服务器运行.特别是,我非常喜欢准备好的陈述,因为他们(恕我直言)"通常"优于未准备好的品种.
我尝试过使用5.5.22中的libmysqld和5.6.4中的libmysqld并且都不起作用.
建立连接,简单的mysql_query/mysql_real_query命令工作正常,但是一旦我的第一个预处理语句发出mysql_stmt_fetch(),我就会得到讨厌的'命令不同步'错误.
一个非常类似的问题出现在oracles论坛(http://forums.mysql.com/read.php?168,507863,507863#msg-507863),没有解决方案.
我没有看到,也不相信我错过了mysql_real_connect()和mysql_stmt_fetch()之间的任何命令.
对于使用预准备语句的嵌入式服务器的任何示例,我的所有搜索都是空的.我也没有找到一个实际的句子"你不能这样做".
那么......它是否支持?
感谢您的专业知识.
//编辑以便进一步解密(并在必要时指示)我的完整mysql cmd序列如下:
mysql_library_init(); // as embedded
mysql_init();
mysql_options(MYSQL_SET_CHARSET_NAME); //to utf8
mysql_options(MYSQL_OPT_USE_EMBEDDED_CONNECTION);
mysql_real_connect();
mysql_real_query("SET NAMES 'utf8'");
mysql_real_query("SET CHARACTER SET 'utf8'");
mysql_set_character_set("utf8"); // yes, you really do need to set utf8 four times
mysql_autocommit( mAutocommit );
Run Code Online (Sandbox Code Playgroud)
此时,mysql_real_query()调用DO工作.我继续...
//all this would only happen once for each stmt
{
mysql_stmt_init();
mysql_stmt_prepare(theQuery);
mysql_stmt_param_count(); // to assert input bind object (aka the predicates) has the same number of params as theQuery
mysql_stmt_result_metadata()
mysql_num_fields(); // to assert …Run Code Online (Sandbox Code Playgroud) 甲骨文:
select systimestamp from dual
Run Code Online (Sandbox Code Playgroud)
MySQL的:
select current_timestamp
Run Code Online (Sandbox Code Playgroud)
SQL Server:
select current_timestamp
Run Code Online (Sandbox Code Playgroud)
PostgreSQL的:
select current_timestamp
Run Code Online (Sandbox Code Playgroud)
问题是,如何获取HSQLDB中的当前时间戳?我使用的是1.8.0.10版
如何以二进制模式将完整的嵌入式h2内存数据库保存/加载到某个文件或目录,以加快加载速度.
我想用它来缓存数据,所以我不必每次都运行create table/insert子句的所有行.
我的数据层中有几个实体存储在特定模式中.例如:
@Entity
@Table(name = "FOO", schema = "DUMMY")
public class Foo {}
Run Code Online (Sandbox Code Playgroud)
我正在尝试设置H2嵌入式数据库,以便对我的数据层进行集成测试.我正在@DataJpaTest为我的测试使用注释来自动配置H2嵌入式数据库.但是,表的创建失败,因为DUMMY在初始化时不会创建模式.
有关如何在测试用例中创建表之前创建模式的任何想法?
我试过使用@Sql(statements ="CREATE SCHEMA IF NOT NOT DISMY")但没有成功.
此外,我试图spring.datasource.url = jdbc:h2:mem:test;INIT=CREATE SCHEMA IF NOT EXISTS DUMMY在我的test.properties文件中设置TestPropertySource("classpath:test.properties"),但这也不起作用.
integration-testing h2 spring-test embedded-database spring-boot
我需要在Java中实现(真正)高性能内存数据库/存储机制的想法.在存储20,000多个java对象的范围内,每5秒左右更新一次.
我愿意接受的一些选择:
纯JDBC /数据库组合
JDO
JPA/ORM /数据库组合
对象数据库
其他存储机制
什么是我最好的选择?你有什么经历?
编辑:我还需要能够查询这些对象
我的应用程序目前使用Microsoft Access,但现在可能托管在Linux机器上.此外,当从多台计算机访问时,其中一台计算机可能会更新记录(当其他用户正在读取时).
我还要求嵌入式数据库应该支持复杂的SQL查询 - 比如内部SQL,联接等.
我尝试了SQLite,但是许多现有的查询都失败了,或者需要修复(就像在使用内部联接的简单查询中,在FROM之后的括号不被SQLite接受,并且必须被删除).也不支持右连接.
我开始了解Apache Derby和H2,但首先会更喜欢你的宝贵意见.
编辑:
我忘了提到我的应用程序完全用Java编写.
编辑:
在预设时,我使用Microsoft Access mdb,在网络驱动器上共享,从远程计算机进行无DSN连接.
更新
我使用Firebird进行了试验,它确实看起来非常好,零管理和SQL兼容.它很快,我可以尝试的任何典型查询都没有问题.我对它非常满意,并希望将它用于我提出这个问题的项目.
希望Advantage Server也会很好,但没有时间来审查它.在审查/使用Firebird之后,我觉得不需要尝试其他任何东西.
我想知道是否有一个轻量级,可嵌入的键/值数据库.
像轻量级Couchdb(RESTful,键/值等),你只需要发送密钥,它就会响应适当的值.
谢谢!
我喜欢.NET的一件事是能够将数据库文件与项目一起使用.我知道使用SQLite数据库,这可以做到,但有人用MySQL数据库后端实现了这一点吗?
因此,例如,如果我运行一个java程序,它应该能够启动自己的迷你MySQL服务器并操纵数据.基本上,我想要与SQLite相同的流程,但我需要MySQL的强大功能.