データベースへのエクスポート

Origin Cは、ワークシートのデータを指定したデータベースのテーブルにエクスポートする機能があります。次のステップは、フィットサマリーデータをデータベースにエクスポートする方法を示しています。

  1. MySQLの"Analysis"というデータベースをセットアップし、それは"Lintilla"というコンピュータ上で動作しているものとします。
  2. 9つのフィールドを持つ"FittingSummary"というテーブルを作成し、最初の2つのフィールドのデータタイプをvarchar(40)としてセットし、残りはdouble型としてセットします。
  3. OriginExe\Samples\Curve Fitting\autofit.ogwを開き、"Data"レイヤ上の列にデータを入力します。
  4. 再計算の後、"Summary"レイヤをアクティブにし、次のコードを実行して、結果をデータベースにエクスポートします。
//データベースの設定に従ってユーザは接続とクエリ文字列を修正
//Server, Database, UID, PWDなどの値がデータベースの設定
#define	STR_DB_CONN				"Driver={MySQL ODBC 3.51 Driver};	\
		Server=Lintilla;Port=3306;Option=4;Database=Analysis;UID=test;PWD=test;"
#define	STR_QUERY				"Select * from FittingSummary"

bool	write_wks_to_db()
{
	Worksheet wks = Project.ActiveLayer();
	if ( wks )
		return false;
	
	//"Lintilla"上の"Analysis"に接続
	string	strConn = STR_DB_CONN;
	string	strQuery = STR_QUERY;
	
	Object	oConn;
	oConn = CreateObject("ADODB.Connection");
	if ( !oConn )
		return error_report("Fail to create ADODB.Connection object!");
	oConn.Open(strConn);
	
	Object	oRecordset;
	oRecordset = CreateObject("ADODB.Recordset");
	if ( !oRecordset )
		return error_report("Fail to create ADODB.Recordset object!");
	
	//recordsetを開く
	oRecordset.CursorLocation = 3; //adUseClient, 詳細は MSDNを参照
	oRecordset.Open(strQuery, oConn, 1, 3); //adOpenKeyset, adLockOptimistic

	int iRowBegin = 0, nRows = 8; //8行
	int iColBegin = 0, nCols = 9; //9列
	
	//LAYWKSETRECORDSET_APPEND は新しいrecordsetを追加;
	//LAYWKSETRECORDSET_REPLACE は既存のrecordsetsを置き換え
	int nOption = LAYWKSETRECORDSET_APPEND; //append.
	
	int nRet = wks.WriteRecordset(oRecordset, nOption,
			iRowBegin, nRows, iColBegin, nCols);
	return (0 == nRet);
}