NuoDB를 사용하여 Ruby On Rails에서 SQL 명령을 수동으로 실행하는 방법
수동으로 SQL 명령을 실행하여 NuoDB의 절차에 액세스하려고 합니다.
Ruby on Rails를 사용하고 있으며 다음 명령을 사용하고 있습니다.
ActiveRecord::Base.connection.execute("SQL query")
SQL 쿼리는 임의의 SQL 명령일 수 있습니다.
예를 들어, "피드백"이라는 테이블이 있는데 다음 명령을 실행할 때 사용합니다.
ActiveRecord::Base.connection.execute("SELECT `feedbacks`.* FROM `feedbacks`")
이렇게 하면 요청된 모든 데이터를 보내는 대신 "참" 응답만 반환됩니다.
레일 콘솔의 출력은 다음과 같습니다.
SQL (0.4ms) SELECT `feedbacks`.* FROM `feedbacks`
=> true
이를 사용하여 NuoDB의 저장 프로시저를 호출하고 싶지만 프로시저를 호출하면 "참" 응답도 반환됩니다.
"진정한" 응답을 받는 대신 SQL 명령을 실행하고 요청된 데이터를 가져올 수 있는 방법이 있습니까?
사용자 지정 SQL 문을 실행하기 위해 사용하는 작업 명령어는 다음과 같습니다.
results = ActiveRecord::Base.connection.execute("foo")
"foo"는 sql 문(즉, "SELECT * FROM table")입니다.
이 명령은 값 집합을 해시로 반환하고 결과 변수에 넣습니다.
그래서 application_controller.rb 레일에 다음과 같이 추가했습니다.
def execute_statement(sql)
results = ActiveRecord::Base.connection.execute(sql)
if results.present?
return results
else
return nil
end
end
execute_statement를 사용하면 발견된 레코드가 반환되고 레코드가 없으면 0이 반환됩니다.
이렇게 하면 레일 응용 프로그램의 아무 곳에서나 호출할 수 있습니다. 예를 들면 다음과 같습니다.
records = execute_statement("select * from table")
"execute_statement"는 또한 NuoDB 프로시저, 함수 및 데이터베이스 보기를 호출할 수 있습니다.
저는 해시를 반환할 수 없었습니다.
results = ActiveRecord::Base.connection.execute(sql)
하지만 exec_query 메서드를 사용하는 것은 효과가 있었습니다.
results = ActiveRecord::Base.connection.exec_query(sql)
유사한 문제에 대해 다른 사람들을 돕기 위해 포럼의 답변을 다시 게시합니다.
@connection = ActiveRecord::Base.connection
result = @connection.exec_query('select tablename from system.tables')
result.each do |row|
puts row
end
res = ActiveRecord::Base.connection_pool.with_connection { |con| con.exec_query( "SELECT 1;" ) }
위의 코드는 다음의 예입니다.
- 데이터베이스 연결에서 임의 SQL 실행
- 나중에 연결 풀로 연결 되돌리기
MySql을 받으면::결과 객체
results = ActiveRecord::Base.connection.execute(query)
행 배열로 변환할 수 있습니다.
results.to_a
이 형식의 배열을 만듭니다.
[[row1][row2]...]
언급URL : https://stackoverflow.com/questions/22752777/how-do-you-manually-execute-sql-commands-in-ruby-on-rails-using-nuodb
'programing' 카테고리의 다른 글
HTML 태그(코드)를 ASP.net MVC & JQuery로 문자열로 게시합니다. (0) | 2023.08.23 |
---|---|
Swift 이니셜라이저가 슈퍼클래스에서 편의 이니셜라이저를 호출할 수 없는 이유는 무엇입니까? (0) | 2023.08.23 |
SQL Server 로그인 오류: 'NT AUTHORITY\SYSTEM' 사용자에 대한 로그인 실패 (0) | 2023.08.23 |
AWS S3: POST 또는 PUT 요청을 사용하여 파일을 업로드해야 합니까? (0) | 2023.08.23 |
겨울잠을 자다, jpa.slot.BasicPathUsageException: 기본 유형의 특성에 가입할 수 없습니다. (0) | 2023.08.23 |