2011-09-11 5 views
3

私は死んで簡単な質問があります。どのようにWindowsでnodejsと任意のSQLiteライブラリを使用する?私はsqlite3のlibを見て、それはLinux固有のコンパイルが必要です。一般的に、私はこのタイプの質問に直面しているのは初めてではありません。 TameJSと同じ問題。誰もがこれに対する解決策を知っていれば、私は感謝します。 Googleは黙っている。Windows用nodejsのSQLite

PS:Cygwinはオプションではありません。ターゲットアプリケーションは、使いやすいポータブルデータベースであり、nodejによって駆動され、Webブラウザインターフェイスを備えている必要があります。アップデート2用下部に読む

+1

[node-sqlite/44](https://github.com/orlandov/node-sqlite/issues/44)は、モジュールがWindows(または[43](https:// github。 com/orlandov/node-sqlite/issues/43)のルート)。 – josh3736

答えて

5

(2013年12月6日)は - 、

私は同様の問題を持ってきた...今の窓の仕事のための有望に見える純粋なJS moduleありWindows SQLiteの再リンク(または既存のnodejsパッケージのコンパイル)で、私が思いつく最高の方法は、コンソールとsqliteクライアントに子プロセスとシェルを使い、結果をキャプチャすることです。これは非常に優れていますが、これが拡張できるかどうかはわかりませんが、限られたイントラネットシナリオではGood Enough™である可能性があります。

アップデート: - あなたはchild_processモジュールとその慣れていない場合にはあなたのアイデアを与える

ここで私は一緒に石畳いくつかのコードです。これはnodejs 0.6.0で動作します。オプションのフラグが含まれている場合、

var cmd = '"' + sqlitePath + '" "' + dbPath + '" "select * from sqlite_master"'; 

-noheader-listは、あなたが解析するためにわずかに良い出力を得る可能性があります:

まず私はsqliteの外の何かを引っ張るために必要なコマンドを構築します。 -separator 'x'を使用してフィールド区切り文字を制御することもできます。ここで、xは区切り文字です。あなたは、これは十分に行うために取得することができるかもしれないいくつかの文字列を解析してsqliteのコンソールクライアントのオプションで遊んでとの組み合わせで

var child = exec(cmd, function(error, stdout, stderr) { 
     if (error) { 
      console.log('error while trying to do stuff...'); 
      // error message in error and stderr 
     } else { 
      console.log('success'); 
      // successful stuff is in stdout 
     } 
    }); 

それから私は、実際に子プロセスを生成します。しかし、私は再び言いますが、これはプロダクションテストではありません - 私はイントラネットのものを嘲笑しています。でも、それは最良のアプローチではないと確信しています!

アップデート2(2013年12月6日):今、この質問を読んだ人々のため

、あなたはgithubの上sql.jsをチェックアウトして興味があるかもしれません。これは、sqliteの純粋なJS実装であり、Windows(または何らかのプラットフォーム)上でやりとりすることに有望です。 npmでインストールするには、パッケージ名はnode-sqlite-purejsであることにご注意ください。

+0

うわー、これらの「直接的な」種類の回避策が光に入ってくる時があります。クール! maenwhile私はメインサーバーがjavaで書かれている間に、nodejsをウェブサーバーとして使用することに決めました。私はjediではないと思っていたので、javascriptで本格的なアプリケーションを書くことはできませんでした)。しかし、execのソリューションは、nodejsの部分に残したいと思っていた小さなデータベースデータキャッシュデータベース。ありがとうございました! – noncom

関連する問題