S-JIS[2005-03-08] 変更履歴

プログラミング言語比較

DBアクセス

  • VisualBasic for Application
  • Java
  • SQL(Oracle
  • PL/SQL(Oracle)

 

 
対象 MS-Access2000 Java一般 sql*plus PL/SQL
コネクション取得 CurrentProject.Connection import java.sql.*;
Connection conn=DriverManager.getConnection(URL);

URLはDBの種類によって異なる文字列
例:PostgreSQL
connect ユーザー/パスワード  
バインド変数 なし なし SQL文の中の「? なし なし SQL文内で「:」を先頭に付けた名前
バインド変数への設定 なし なし stmt.set型(n,値);
nは、「?」の順番を表す番号
なし なし DBMS_SQL.BIND_VARIABLE(カーソルID,バインド変数名,値);
バインド変数名は、名前から「:」を除いた文字列
SELECT Dim rcd As New ADODB.Recordset
rcd.Open SQL, CurrentProject.Connection
data=rcd![項目名].Value
rcd.Close
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery(SQL);
型 data=rs.get型(項目名);
rs.close();
stmt.close();
PreparedStatement stmt=conn.prepareStatement(SQL);
stmt.set型(n,値);
ResultSet rs=stmt.executeQuery();
型 data=rs.get型(項目名);
rs.close();
stmt.close();
SQLをそのまま記述 DECLARE
CURSOR カーソル名 IS SELECT文;
変数 カーソル名%ROWTYPE;

OPEN カーソル名;
FETCH カーソル名 INTO 変数;
DATA=変数.項目名;
CLOSE カーソル名;
DECLARE
バインド変数 テーブル.項目名%TYPE;
変数 テーブル.項目名%TYPE;
カーソルID INTEGER;
dummy INTEGER;

カーソルID:=DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(カーソルID,SQL文,DBMS_SQL.NATIVE);
DBMS_SQL.BIND_VARIABLE(カーソルID,バインド変数名,値);
DBMS_SQL.DEFINE_COLUMN(カーソルID,番号,変数);
dummy:=DBMS_SQL.EXECUTE(カーソルID);
dummy:=DBMS_SQL.FETCH_ROWS(カーソルID);
DBMS_SQL.COLUMN_VALUE(カーソルID,番号,変数);
DBMS_SQL.CLOSE_CURSOR(カーソルID);
Statement stmt=conn.createStatement();
stmt.execute(SQL);
ResultSet rs=stmt.getResultSet();
型 data=rs.get型(項目名);
rs.close();
stmt.close();
PreparedStatement stmt=conn.prepareStatement(SQL);
stmt.set型(n,値);
stmt.execute();
ResultSet rs=stmt.getResultSet();
型 data=rs.get型(項目名);
rs.close();
stmt.close();
項目値取得 data=rcd![項目名].Value
data=rcd!項目名.Value
data=rcd![n].Value
型 data=rs.get型(項目名);
型 data=rs.get型(n);
なし DATA=変数.項目名 DBMS_SQL.DEFINE_COLUMN(カーソルID,番号,DATA);で定義し
DBMS_DQL.COLUMN_VALUE(カーソルID,番号,DATA);
複数行処理 Do Until rcd.EOF
 data=rcd![項目名].Value
 rcd.MoveNext
Loop
do{
 型 data=rs.get型(項目名);
}while(rs.next());
なし OPEN カーソル名;
LOOP
 FETCH カーソル名 INTO 変数;
 EXIT WHEN カーソル名%NOTFOUND;
 DATA=変数.項目名;
END LOOP;
CLOSE カーソル名;


↓参考
カーソル名%FOUND
カーソル名%NOTFOUND
カーソル名%ISOPEN
WHILE DBMS_SQL.FETCH_ROWS(カーソルID)!=0 LOOP
 DBMS_SQL.COLUMN_VALUE(カーソルID,番号,変数);
END LOOP;
FOR 変数 IN カーソル名 LOOP
 DATA=変数.項目名;
END LOOP;
INSERT rcd.Open "テーブル", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
rcd.AddNew
rcd![項目名].Value=値
rcd.Update
Statement stmt=conn.createStatement();
int 更新件数=stmt.executeUpdate(SQL);
stmt.close();

Statement stmt = conn.createStatement();
stmt.execute(SQL);
int 更新件数=stmt.getUpdateCount();
stmt.close();
PreparedStatement stmt=conn.prepareStatement(SQL);
stmt.set型(n,値);
int 更新件数=stmt.executeUpdate();
stmt.close();

PreparedStatement stmt=conn.prepareStatement(SQL);
stmt.set型(n,値);
stmt.execute();
int 更新件数=stmt.getUpdateCount();
stmt.close();
SQLをそのまま記述 SQLをそのまま記述 DECLARE
バインド変数 テーブル.項目名%TYPE;
カーソルID INTEGER;
処理件数 INTEGER;

カーソルID:=DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(カーソルID,SQL,DBMS_SQL.NATIVE);
DBMS_SQL.BIND_VARIABLE(カーソルID,バインド変数名,値);
処理件数:=DBMS_SQL.EXECUTE(カーソルID);
DBMS_SQL.CLOSE_CURSOR(カーソルID);
COMMIT;
UPDATE rcd.Open "テーブル", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
Do Until rcd.EOF
 If rcd![項目名] <= 条件 Then
  rcd![項目名].Value=値
  rcd.Update
 End If
 rcd.MoveNext
Loop

rcd.Open SELECTのSQL,  CurrentProject.Connection, adOpenDynamic, adLockPessimistic
 Do Until rcd.EOF
   rcd![項目名].Value=値
   rcd.Update
  rcd.MoveNext
Loop

rcd.Open UPDATEのSQL, CurrentProject.Connection
DELETE rcd.Open DELETEのSQL, CurrentProject.Connection
コミット   conn.commit(); COMMIT; COMMIT;
ロールバック   conn.rollback(); ROLLBACK; ROLLBACK;

言語比較全般へ戻る / 参考文献 / プログラム記号比較 / 技術メモへ戻る
メールの送信先:ひしだま