2013-08-06 2 views
2

나는 livecode application.In에서 모든 사용자에 대해 공유 할 수 있어야한다는 것을 의미하는 클라우드 기반 sqlite를 사용해야합니다. 지금은 로컬에 대해 sqlite를 사용하고 있지만 이 모든 사용자가 자신의 database.But을 가지고 있지만 모든 사용자에게 하나의 데이터베이스를 공유하는 것입니다. 내가 원격 데이터베이스에 대한 JSON 구문 분석을 사용하는 것이 좋습니다 하나의 장치 응용 프로그램에 대해서만 작동한다고 생각합니다. http://lessons.runrev.com/s/lessons/m/4071/l/7003-connecting-to-a-mysql-database.이 mysql 데이터베이스는 웹의 URL, 사용자 이름 및 암호를 통해 액세스 할 수 있습니다. Json 구문 분석이 없습니다. Sqlite의 경우 가능합니까? 도와주세요중앙 데이터베이스의 Livecode에 구름베이스의 Sqlite

답변

0

SQLite는 단일 사용자 로컬 파일 데이터베이스로 설계되어 있으므로 응용 프로그램에 적합하지 않습니다. 클라우드 기반 데이터 저장을위한 많은 옵션이 있습니다. MySQL과 같은 원격 데이터베이스 서버에 직접 연결하려는 경우 보안 위험이있는 원격 액세스를 사용할 수 있습니다. 제한된 IP 집합에서 데이터베이스에 액세스해야하는 경우 고려해야 할 가치가 있지만 제한된 권한 만 가진 사용자와 SSL을 사용하십시오.

JSON의 작동 방식을 잘 모르지만 웹 서버 + 서버 측 스크립트를 사용하여 JSON 개체를 반환하는 API를 만들 수 있습니다. 이는 원격 액세스보다 더 안전한 접근 방식입니다. 다른 옵션도 있습니다 ... 아마존 웹 서비스 SimpleDB가 아마도 당신을 위해 일할 것입니다.

2

서버를 작성하는 경우 여러 클라이언트에서 SQLite를 사용할 수 있습니다. MySQL이나 PostgreSQL 서버를 사용하는 것이 더 쉽습니다. 심지어 강력한 타이핑이 짜증납니다.

네트워크로 연결된 SQLite의 경우 소켓 연결을 통해 클라이언트의 데이터를 수신하는 서버가 필요합니다. 따라서 기본적으로 네트워크를 통해 가져 오는 SQL 쿼리를 전달하는 단일 LiveCode 프로그램이 있습니다. (테스트되지 않은) 매우 simplicistic 예 :

서버 :

on mouseUp 
    accept connections on port 8080 with message "queryMessage" 
end mouseUp 

on queryMessage theIP 
    read from socket theIP until return 
    put it into mySQL 
    delete char -1 of mySQL --remove trailing return that was added for network protocol 
    put revOpenDatabase("SQLite","path/to/myDatabase.sqlite",,,) into connectionID 
    put revDataFromQuery(,,connectionID,mySQL) into myResult 
    revCloseDatabase connectionID 
    write length(myResult) & return & myResult to socket theIP --no return needed, length based 
    close socket theIP 
end queryMessage 

클라이언트 :

on mouseUp 
    -- make sure to know what IP the server is running from! 
    -- the number after ":" is the port 
    put "localhost:8080" into myIP 
    open socket to myIP 
    write "SELECT * FROM tableName" & return to socket myIP 
    read from socket myIP until return 
    put it into returnStringLength 
    read from socket myIP for returnStringLength chars 
    put it into field "the sql query result" 
    close socket myIP 
end mouseUp 

당신이 추가로 필요합니다

  • 가지 방법 등 INSERT, PRAGMA, 같은 명령을 처리 할 수 . (기본적으로 revExecuteSQL)
  • SQL 오류보고/한 dling
  • 소켓 오류보고/처리
  • 공용으로 액세스 할 수 있으면 보안! 쿼리되고 난 단지 4-8 고객과이 방법을 사용했습니다, 그래서 그것을 더 큰 클라이언트 기초 용 저울 얼마나 잘 모르는

을 무슨 일이 일어나고 있는지 누구

  • 로깅. 이 시나리오에서 "서버"는 공유 웹 호스트 (예 : 웹 페이지)에서 실행되지 않고 대신 동일한 로컬 네트워크에있는 PC의 "일반"프로그램입니다 (예 : 클라이언트와 동일한 PC에서 실행되도록 준비 됨). 인터넷을 통해이를 수행하는 것은 일반적으로 라우터 또는 방화벽에서 포트를 전달해야하므로 설정하는 것이 약간 어렵지만 또한 가능합니다.

    사전의 예에서 사용한 명령을 찾아보십시오.

  • 관련 문제