セットソルバーは、ODBCインタフェースを提供し、C#は、ODBC呼び出しSPLの計算を介して設定することができます。次のような構造は次のようになります。
ODBCサービス
ODBCドライバのインストールセットリゾルバ
使用セット電卓ODBC、インストールパスセットのソルバーの下のbinディレクトリに、ODBCドライバをインストールするには、クライアント最初の必要性は、ODBCドライバが計算機を設定し、インストールするには、管理者権限でesprocOdbcinst.exeを行います。
ODBCサービスを開始
ソルバーのセットでは、[インストールルートディレクトリ] \ esProc \ binに、ダブルesprocs.exeファイル(Linuxシステムでは、あなたがサービスウィンドウを起動するServerConsole.shを実行することができます)、ポップアップウィンドウ以下のサービス:
選択ODBCサーバー、次のようにODBCサービスウィンドウソルバーセットを開くには、[CONFIG]ボタンをクリックします。
メインコンフィギュレーションポートIPでのODBCサービスの設定、ユーザー名とパスワードへのアクセスを許可するODBCサービス。設定後、設定を保存し、[OK]をクリックしてください。次に、サービスを開始するには、[スタート]をクリックします。
ODBCデータソースの追加
ドライバが正常にインストールされたら、あなたはEsprocOdbc ODBCドライバを選択し、対応するODBCデータソースに追加することができます
ポップアップウィンドウの構成では、構成パラメータは、ODBC接続リゾルバ設定、ユーザデータソース名サーバは、次のような構成、IP、ポート、ユーザー名とパスワードから定義されたパラメータと一致することができます。
接続テストは、接続をテストすることができますクリックして、正しく設定されている場合、テストが成功した接続が表示されます:
C#の呼び出し
SPL文の実行
このようなデータテーブルを作成し、データテーブルに二つのフィールドbaseNum、square2、それぞれ自然数未満100及び100回の平方値の記録までを追加し、最終的にデータテーブルの結果セットとして返されます。
C#のコードは次のとおりです。
システムを使用しました。 System.Collections.Genericを使用しました。 System.Linqのを使用しました。 System.Threading.Tasksを使用しました。 System.ComponentModelを使用しました。 System.Textのを使用しました。 System.Data.Odbcを使用しました。 名前空間odbctestと { classDB { publicvoid RSET(OdbcConnectionconn、文字列selectSql) { OdbcCommandcmd = newOdbcCommand(selectSql、CONN)。 OdbcDataReaderリーダ= cmd.ExecuteReader(); int型nCount = 0; //循环输出列名 のための(INT I = 0、I <reader.FieldCount; I ++) { Console.Write(reader.GetName(I)+ "\\ T")。 } Console.Write( "\\ N")。 しばらく(reader.Read()) { Console.Write(reader.GetInt32(0)+ "\ T"); Console.WriteLineを(reader.GetInt32(1)+ "T \\"); nCount ++; } Console.WriteLineを( "=ながらカラムを終了" \ reader.FieldCount +); Console.WriteLineを(\ nCount +) "行=ながら終了"; } } classProgramは { メイン(文字列\ [\]引数)をstaticvoid { //は、ODBC接続文字列DSN、UIDを生成し、PWD属性が順次ODBCデータソース名、ユーザー名、パスワード示し stringconstrを= "DSN = EsprocOdbc;" \ + "UID =のUser0;" \ + "PWD = 123;"; OdbcConnectionconn = newOdbcConnection(コンストラクタ); conn.Open(); 実行される// SPL文 baseNum:stringspl =「10.new(〜 、〜*〜:をsquare2) "; DBDB = NEWDB()。 db.rset(CONN、SPL)。 Console.Write( "エンド....")。 Console.ReadKey(); conn.close(); } } }システムを使用して、 System.Collections.Genericを使用しました。 System.Linqのを使用しました。 System.Threading.Tasksを使用しました。 System.ComponentModelを使用しました。 System.Textのを使用しました。 System.Data.Odbcを使用しました。 名前空間odbctestと { classDB {publicvoid RSET(OdbcConnectionconn、文字列selectSql){ OdbcCommandcmd = newOdbcCommand(selectSql、CONN)。 INT nCount = 0; //循环输出列名のための(INT I = 0、I <reader.FieldCount; I ++)リーダー= cmd.ExecuteReader()OdbcDataReader { Console.Write(reader.GetName(I)+ "\\ T"); } Console.Write( "\\ N");一方(reader.Read()) { Console.Write(reader.GetInt32(0)+ "\ T")。 Console.WriteLineを(reader.GetInt32(1)+ "\\ T")。 nCount ++; } Console.WriteLineを( "一方端カラム=" \ + reader.FieldCount)。 Console.WriteLineを( "一方端行=" \ + nCount)。 } } classProgram {staticvoidメイン(文字列\ [\]引数){//生成ODBC连接字符串、其中DSN、UID、PWD属性依次表示ODBC数据源名称、用户名、密码stringconstr = "DSN = EsprocOdbc;" \ + "UID =のUser0;" \ + "PWD = 123;"; OdbcConnectionconn = newOdbcConnection(コンストラクタ)。 conn.Open(); //要执行的SPL语句stringspl = "10.new(〜:baseNum、〜*〜:square2)"; DBDB = NEWDB()。 db.rset(CONN、SPL)。 Console.Write( "エンド....")。 Console.ReadKey(); conn.close(); } } }
結果:
SPL内のローカルファイルへのアクセス
、また、相対SPLもTXT、エクセル、JSON、CSV、などのローカルファイルにアクセスすることができますパスを見つけることができますのCtx および他の種類のファイルを、ファイルへのアクセスは、その後、相対パスを使用して、絶対位置の位置を確認することができますそれは我々がホームディレクトリを設定するので、まず、設定ファイル内のホームディレクトリからの相対である:
ノードファイルraqsoftConfig.xml <Esproc> </ Esproc>の中で次のノードを追加します。
< - ! -オペレーター主コレクタ路れる単一の絶対パス> <メインパス> D :! \\ mainFile </メインパス> < -単一の絶対パスオペレーター主コレクタパス- - > <メインパス> D:\\ mainFile </メインパス>
私たちは、コードの一部は実施例と同じであるとの接続を確立するために、メインディレクトリにC#での呼び出しをファイルemployee.txtを呼び出して、同じようにしたい、SPL文は次のとおりであります:
stringspl = "=ファイル(\\" employee.txt \\ ")T @インポート()。"; // SPL语句stringspl = "=ファイル(\\" employee.txt \\ ")T @インポート()。 「; // SPL语句
ここでは、絶対パスと相対パスの使用をサポートしています。
次のように出力部コードを設定結果です。
(reader.Read())、一方 { Console.Write(reader.GetInt32(0)+ "\\ T")。 Console.Write(reader.GetString(1)+ "\\ T")。 Console.Write(reader.GetString(2)+ "\\ T")。 Console.Write(reader.GetString(3)+ "\\ T")。 Console.Write(reader.GetString(4)+ "\\ T")。 Console.Write(reader.GetDate(5).ToString( "YYYY-MM-DD")\ + "\\ T")。 Console.Write(reader.GetDate(6).ToString( "YYYY-MM-DD")\ + "\\ T")。 Console.Write(reader.GetString(7)+ "\\ T")。 Console.WriteLineを(reader.GetInt32(8))。 nCount ++; }一方(reader.Read()) { Console.Write(reader.GetInt32(0)+ " Console.Write(reader.GetString(2)+ "\\ T")。 Console.Write(reader.GetString(3)+ "\\ T")。 Console.Write(reader.GetString(4)+ "\\ T")。 Console.Write(reader.GetDate(5).ToString( "YYYY-MM-DD")\ + "\\ T")。 Console.Write(reader.GetDate(6).ToString( "YYYY-MM-DD")\ + "\\ T")。 Console.Write(reader.GetString(7)+ "\\ T")。 Console.WriteLineを(reader.GetInt32(8))。 nCount ++; }
結果:
この単純な算術演算のために、あなたはまた、単純なSQL構文を使用することができます。
stringspl = "$ employee.txt SELECT * FROM"; stringspl = "$ employee.txt SELECT * FROM";
どこ$ローカルファイルシステム、結果セットの文言の両方に同じへのアクセスを表します。
パラメータを持つSPL声明
パラメータは、同様に、SPL文はまた、上記の例のようにパラメータの使用をサポートし、SQL文の重要な部分であるあなたは、データのemployee.txtファイルを照会したいのですが、15,000〜10,000の唯一のクエリ給与を必要とし記録、および有料ソート昇順:
次のようにコードの一部を呼び出すと、次のとおりです。
stringspl = "$ *を選択 employee.txtから どこSALARY>とSALARY <?? SALARYによってオーダー"; stringsplは= "$ *を選択 employee.txtから ?どこSALARY>とSALARY < SALARYによって順序"。
どの使用?パラメータの場合。
次のようにメソッドを渡すパラメータコードのRSET一部です。
OdbcCommandcmd = newOdbcCommand(selectSql、CONN)。 cmd.Parameters.Add( "ARG1"、OdbcType.Int).Valueの= 10000。 cmd.Parameters.Add( "ARG2"、OdbcType.Int).Valueの= 15000; OdbcCommandcmd = newOdbcCommand(selectSql、CONN)。 cmd.Parameters.Add( "ARG1"、OdbcType.Int).Valueの= 10000。 cmd.Parameters.Add( "ARG2"、OdbcType.Int).Valueの= 15000。
結果:
データソースSPL文はあります
それは計算データ計算ツールのセットですので、それは一つの重要な方法でデータソースがデータベースであり、C#のSPL文でデータソースにそれを呼び出す方法ですか?見下す:
データソースとC#SPL文のコール前に、プロジェクトに対応するデータベース駆動型アプリケーションを追加し、その後のコンフィギュレーションファイルraqsoftConfig.xmlにデータソース情報を設定する必要があります。
例えば:DMのためのSPL文の呼び出しで使用されるデータソースの名前、HSQLデータベースタイプ、次のように構成がある:
まず、データがHSQL駆動のhsqldb.jarを設定は、アプリケーションプログラムにロードされ、
第二に、raqsoftConfig.Xml <ランタイムに> </ランタイム>ノード構成データソース情報:
<DBリスト> <DB名= "DM"> <! -数据源名称- > <プロパティ名= "URL"の値= "はjdbc:HSQLDB:HSQL://127.0.0.1/demo"> </ property>の <\! - \ - URL连接- > <プロパティ名= "ドライバ"値= "org.hsqldb.jdbcDriverなど"> </ property>の <! -数据库驱动- > <プロパティ名= "タイプ"の値= "13"> </ property>の <! -数据库类型- > <プロパティ名= "ユーザー"値= "SA"> </ property>の <! -用户名- > <プロパティ名= "パスワード"値= ""> </ property>の <! -密码- > <プロパティ名= "バッチサイズ"の値= "1000"> </ property>の <> </プロパティ>「真の」名=プロパティ「自動接続」値= <! - trueに設定した場合はfalseが、ない場合は、自動的に接続するか、あなたが直接、データベースにアクセスするために$ SQL文で開始することができますが接続データベース接続(DB)を作成するために使用文の前に自動接続、 - > > </プロパティを「falseに」<プロパティ名=「useSchema」値を=> <プロパティ名= "addTilde"値= "偽"> </ property>の <プロパティ名= "dbCharset"値= "UTF-8"> </ property>の <プロパティ名= "clientCharset"値= "UTF-8" > </ property>の <プロパティ名= "needTransContent"値= "偽"> </ property>の <プロパティ名= "needTransSentence"値= "偽"> </ property>の <プロパティ名= "caseSentence"値= "falseを"> </ property>の </ DB> </ DBリスト> <DBリスト> <DB名= "DM"> <プロパティ名= "URL" の値= "はjdbc:HSQLDB:HSQL://127.0.0.1/demo" <! - - データソース名> / > <\! - \ - URL接続 - > <プロパティ名= "ドライバ" 値= "org.hsqldb.jdbcDriverなど" /> <! - データベースドライバ - > <プロパティ名= "タイプ" 値=「13 "/> <! - データベースの種類 - > <プロパティ名=" ユーザー "値=" SA "/> <! - ユーザー名 - > <プロパティ名=" パスワード "値="「/> <! - パスワード - > <プロパティ名= "バッチサイズ" の値= "1000" /> <プロパティ名= "自動接続" 値= "true" を/> <! - 自動的に接続されているかどうかを、trueに設定されている場合、することができ直接接続(DB)を使用して、データベース接続を作成するためのステートメントを使用する前に、それは、自動的に接続されません、falseの場合、データベースにアクセスするために$ SQL文で始まる - > <プロパティ名=「useSchema」値=「false」に/> <プロパティ名= "addTilde」値= "偽" /> <プロパティ名= "dbCharset" 値= "UTF-8" /> <プロパティ名= "clientCharset" 値= "UTF-8" /> <プロパティ名= "needTransContent" 値= "偽" /> <プロパティ名= "needTransSentence" 値= "偽" /> <プロパティ名= "caseSentence" 値= "偽" /> </ DB> </ DBリスト>/ DBリスト>/ DBリスト>
今では、我々は、データソースからのDM SPL問い合わせSALES表、SELLERID 3従業アウトフィルタ、2014年11月号11から2014 12月12日の間にすべての注文情報を持っています:
次のようにコードの一部を呼び出すと、次のとおりです。
stringspl = "$(DM)*選択 販売から SELLERID =?とORDERDATE> TO \ _DATE(?、 'YYYY-MM-DD')とORDERDATE <TO \ _DATE(?、 'YYYY-MM-DD')" ; stringspl =「$(DM)*選択 販売から SELLERID =とORDERDATE> TO \ _DATE(、 'YYYY-MM-DD'?)とORDERDATE <TO \ _DATE(、 'YYYY-MM-DD'?)? 「;
次のようにコードの一部を通過させるパラメータRSETプロセス:
cmd.Parameters.Add( "ARG1"、OdbcType.Int).Valueの= 3。 cmd.Parameters.Add( "ARG2"、OdbcType.Date).Valueの= "2014年11月11日"。 cmd.Parameters.Add( "ARG3"、OdbcType.Date).Valueの= "2014年12月12日"。cmd.Parameters.Add( "ARG1"、OdbcType.Int).Valueの= 3。 cmd.Parameters.Add( "ARG2"、OdbcType.Date).Valueの= "2014年11月11日"。 cmd.Parameters.Add( "ARG3"、OdbcType.Date).Valueの= "2014年12月12日"。
次のように出力部コードを設定結果です。
(reader.Read())、一方 { Console.Write(reader.GetInt32(0)+ "\\ T")。 Console.Write(reader.GetString(1)+ "\\ T")。 Console.Write(reader.GetInt32(2)+ "\\ T")。 Console.Write(reader.GetDecimal(3)+ "\\ T")。 Console.WriteLineを(reader.GetDateTime(4).ToString(「YYYY-MM-DD HH