2

これはサンプル手順です。

DROP PROCEDURE IF EXISTS AddEdge; 
DELIMITER | 
CREATE PROCEDURE AddEdge(  
  pSourceName VARCHAR(20), pDestinationName VARCHAR(20), pValue INT  
) 
BEGIN 
  DECLARE vSourceID, vDestinationID, vEdgeID INT; 
  SET vSourceID = ( SELECT NodeID FROM nodes WHERE NodeName = pSourceName ); 
  IF vSourceID IS NULL THEN 
    BEGIN 
      INSERT INTO nodes (NodeName,Total) VALUES (pSourceName,0); 
      SET vSourceID = LAST_INSERT_ID(); 
    END; 
  END IF; 
  SET vDestinationID = ( SELECT NodeID FROM nodes WHERE NodeName = pDestinationName ); 
  IF vDestinationID IS NULL THEN 
    BEGIN 
      INSERT INTO nodes(NodeName, Total)  
      VALUES(pDestinationName,0); 
      SET vDestinationID = LAST_INSERT_ID(); 
    END; 
  END IF; 
  SET vEdgeID = ( SELECT EdgeID FROM edges  
                  WHERE sourceNodeID = vSourceID AND dID = vDestinationID  
                ); 
  IF vEdgeID IS NULL THEN 
    INSERT INTO edges(sourceNodeID,destinationNodeID,value)  
    VALUES(vSourceNodeID,vDestinationID,pValue); 
  ELSE 
    UPDATE edges SET value = pValue   
    WHERE sourceNodeID = vSourceID AND destinationNodeID = vDestinationID; 
  END IF; 
END;  
| 
DELIMITER 

Androidで使用されているデータベースSQLiteで上記の手順を使用するにはどうすればよいですか?実際、私はandroid、つまりSQLiteでデータベースを処理するのは初めてです。

ありがとう。

4

1 に答える 1

1

シンプルさを実現するために、SQLiteは、高い同時実行性、きめ細かいアクセス制御、豊富な組み込み関数のセット、ストアドプロシージャ、難解なSQL言語機能、XMLなど、一部の人々が役立つと考える他の特性を犠牲にする必要がありました。またはJava拡張機能、テラバイトまたはペタバイトのスケーラビリティなど。--sqlite.org _


しかし、ここでいくつかの回避策を見つけることができます:SQLiteへのストアドプロシージャの追加

于 2012-05-25T09:09:33.053 に答える