VCでSQLサーバー間の型の変換について – プログラミング – Home

VCでSQLサーバー間の型の変換につい...
 
通知
すべてクリア

[解決済] VCでSQLサーバー間の型の変換について


田中さん
 田中さん
(@田中さん)
ゲスト
結合: 19年前
投稿: 49
Topic starter  

VisualC.NET、WindowsSDKにて開発しています。
SQLサーバーから値を取得する時のSQLサーバーとクライアントとの型の変換について
お尋ねします。
SQLサーバー上のadSmallInt型のフィールドにAddNew()で値を入れようと思います。
そこでレコードセットに値を入れようと思うのですがレコードをInt型で定義すると値が
登録出来ません。
C言語の型とSQLサーバーの型の変換が必要と思うのですが
型の変換はどのようにすれば良いのでしょうか?

ちなみに登録したいレコードセットの定義は以下のようになっています。
class CRsSyain : public CADORecordBinding
{
BEGIN_ADO_BINDING(CRsSyain)
//社員DATAのレコード情報

//社員ID
ADO_VARIABLE_LENGTH_ENTRY2(1, adSmallInt, m_syain_id,sizeof
(m_syain_id), ml_syain_id, TRUE)
//社員名
//ADO_VARIABLE_LENGTH_ENTRY2(2, adVarChar,
m_syain_name,sizeof(m_syain_name), ml_syain_name, TRUE)

END_ADO_BINDING()

public:
//テーブルの中身
//社員ID
int m_syain_id; //ここの定義をadSmallInt型にしたい
ULONG ml_syain_id;
//社員名
CHAR m_syain_name[20];
ULONG ml_syain_name;
};


引用未解決
トピックタグ
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

MFC使って、ウィザード使って、参考ソース吐き出してみるのもひとつの手かな?
OLE DB あたりのソースは参考に出来ないかな?
DDX/DDVあたりが参考になると思うのですが
的外れかも知れません、

ほかの、あまりあいまいでない回答をご期待ください


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

Recordset フィールドを C/C++ 変数にバインドするには
http://www.microsoft.com/japan/developer/library/ado260/mdmscusingadovcextensio
ns.htm
が参考になそうな。。。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

田中さんの内容を読むと、「adSmallInt型」はSQL固有の型です。
型変換は出来ないと思います。
「adSmallInt型」と同じ「型」を「SQL_C_XXXX」から選んでバインドする
方法だと思います。
SQLServerなら詳しい情報があると思います。
#オラクルのときは情報が少なくて苦労しました。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

参考になりますか?

http://powersoft.ashisuto.co.jp/technicalservice/eas-man/jagref/jagrefp41.htm


返信引用
中田さん
 中田さん
(@中田さん)
ゲスト
結合: 19年前
投稿: 1
 

adSmallInt は short


返信引用
田中さん
 田中さん
(@田中さん)
ゲスト
結合: 19年前
投稿: 49
Topic starter  

皆様、回答ありがとうございます。

MSDNは最近構成が変わってしまいましたね。以前の情報を探しにくくて困ってます。
adSmallIntは2バイトなので同じ2バイトのshortを使って解決しました。

という事は1バイトの整数ならbyteを使えば行けるのかな~?と思い試してみます。
adSmallIntについては解決しました。
解決済みはのチェックはもう少し後に付けさせて頂きます。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

 相手がshort型なら、こちらもshort型で受取る方がいいです。
 値の範囲が間に合うのなら、一度short型で受取ってからbyte型に変えるのが
いいと思います。
 型を合わせないと目的の値が取得出来ないことがあります。
 もし、byte型で受取りたいのなら、SqlServer側もbyte型に変える必要があります。


返信引用
田中さん
 田中さん
(@田中さん)
ゲスト
結合: 19年前
投稿: 49
Topic starter  

他にも聞きたい事が出てきましたが、
とりあえずこの質問は解決しました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました