我正在搜索允许我连接到Hypertable DB的连接器/库。我在Windows机器上安装了Hypertable,但我不知道如何连接它。我在Visual Studio中使用ASP.NET 4.5 C#。
我试过这个: http://ht4n.softdev.ch/index.php/getting-started-in-5min
但我不知道如何使用它。将ht4d.dll导入到' bin'文件夹,但不知道我还应该做什么。
感谢。
答案 0 :(得分:1)
首先确保安装成功。 确保PATH系统环境变量指向超级安装文件夹 在我的系统上:
C:\Program Files\Hypertable
之后尝试从cmd命令" hypertable" 你需要得到一个超级欢迎的消息。
我还下载了ht4n连接器 我创建了一个控制台应用程序来测试它 我创建了对ht4n.dll的引用
这是我使用的代码并且已成功连接:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Hypertable;
namespace HypertableTest1
{
class Program
{
static void Main(string[] args)
{
//Hyper net.tcp://host[:port] Native Hypertable client protocol
//Thrift net.tcp://host[:port] Hypertable Thrift API
//SQLite file://[drive][/path]/filename Embedded key-value store, based on SQLite
//Hamster file://[drive][/path]/filename Embedded key-value store, based on hamsterdb
var connectionString = "Provider=Hyper;Uri=net.tcp://localhost";
using (var context = Context.Create(connectionString))
using (var client = context.CreateClient())
{
// use the client
//client.CreateNamespace("CSharp");
if (!client.NamespaceExists("/CSharp"))
client.CreateNamespace("/CSharp");
INamespace csNamespace = client.OpenNamespace("CSharp");
csNamespace.CreateTable("MyFirstTable", "");
IList<Cell> c = csNamespace.Query("");
}
Console.ReadLine();
}
}
}
答案 1 :(得分:1)
在这里犯罪
ht4n很烦人。
首先,它属于GNU通用公共许可证v3(不是LGPL)和商业闭源许可证。基本上,没有比这更好的了。
然后它用C ++ .NET编写,虽然比Thrift快,但在Windows上创建了一个平台依赖(mono不支持C ++ .NET)。
因为它是用C ++ .NET编写的,所以它附带了那些独立的32/64位dll版本,它们只能在Windows上的x86(32/64)处理器上运行。
如果你想要一个而不是另一个,你必须重新编译...
这两个问题结合在一起,不仅是愚蠢的商业许可证,而且还违背了像.NET这样的VM语言的想法。
由于我的Chrubuntu Chromebook使用Linux(带ARM处理器)和C ++ .NET无法在那里工作,我已将Java Thrift-Client移植到C#。
你可以找到它&gt; here&lt;。{
附带一个很好的示例程序btw。
基本上
ThriftClient client = null;
long ns = -1;
try
{
client = ThriftClient.create("localhost", 38080);
if (!client.namespace_exists("test"))
{
System.Console.WriteLine("Namespace test does not exist");
client.create_namespace("test");
}
ns = client.namespace_open("test");
System.Console.WriteLine(client.hql_query(ns, "show tables").ToString());
client.namespace_close(ns);
} // End Try
catch (System.Exception e)
{
System.Console.WriteLine (e.Message);
System.Console.Error.WriteLine (e.StackTrace);
try
{
if (client != null && ns != -1)
client.namespace_close(ns);
}
catch (System.Exception ex)
{
System.Console.WriteLine (ex.Message);
System.Console.Error.WriteLine("Problem closing namespace \"test\" - " + e.Message);
}
System.Environment.Exit(1);
} // End Catch
Thrift-Client可以在任何地方工作,具有任意数量的位 而且 - 最重要的是 - 从现在开始,您可以使用所有Java Thrift-samples / tutorials进行最小的更改。
答案 2 :(得分:0)