@@ -468,58 +468,18 @@ def add_limit_offset!(sql, options)
468468 end
469469 end
470470
471- # Appends a locking clause to an SQL statement.
472- # This method *modifies* the +sql+ parameter.
473- # # SELECT * FROM suppliers FOR UPDATE
474- # add_lock! 'SELECT * FROM suppliers', :lock => true
475- # add_lock! 'SELECT * FROM suppliers', :lock => ' WITH(HOLDLOCK, ROWLOCK)'
476- # http://blog.sqlauthority.com/2007/04/27/sql-server-2005-locking-hints-and-examples/
477471 def add_lock! ( sql , options )
472+ # http://blog.sqlauthority.com/2007/04/27/sql-server-2005-locking-hints-and-examples/
478473 case lock = options [ :lock ]
479- when true then sql << " WITH(HOLDLOCK, ROWLOCK) "
480- when String then sql << "#{ lock } "
474+ when true then sql << ' WITH(HOLDLOCK, ROWLOCK) '
475+ when String then sql << " #{ lock } "
481476 end
482477 end
483478
484479 def empty_insert_statement ( table_name )
485- "INSERT INTO #{ table_name } DEFAULT VALUES"
480+ "INSERT INTO #{ quote_table_name ( table_name ) } DEFAULT VALUES"
486481 end
487482
488- def select ( sql , name = nil , ignore_special_columns = false )
489- repair_special_columns ( sql ) unless ignore_special_columns
490- fields , rows = raw_select ( sql , name )
491- result = [ ]
492- for row in rows
493- row_hash = { }
494- fields . each_with_index do |f , i |
495- row_hash [ f ] = row [ i ]
496- end
497- result << row_hash
498- end
499- result
500- end
501-
502- def insert_sql ( sql , name = nil , pk = nil , id_value = nil , sequence_name = nil )
503- set_utf8_values! ( sql )
504- super || select_value ( "SELECT SCOPE_IDENTITY() AS Ident" )
505- end
506-
507- def update_sql ( sql , name = nil )
508- set_utf8_values! ( sql )
509- auto_commiting = @connection [ "AutoCommit" ]
510- begin
511- begin_db_transaction if auto_commiting
512- execute ( sql , name )
513- affected_rows = select_value ( "SELECT @@ROWCOUNT AS AffectedRows" )
514- commit_db_transaction if auto_commiting
515- affected_rows
516- rescue
517- rollback_db_transaction if auto_commiting
518- raise
519- end
520- end
521-
522-
523483 # SCHEMA STATEMENTS ========================================#
524484
525485 def table_alias_length
@@ -792,7 +752,7 @@ def create_database(name)
792752 end
793753
794754 def current_database
795- @connection . select_one ( " SELECT DB_NAME()" ) [ 0 ]
755+ select_value ' SELECT DB_NAME()'
796756 end
797757
798758 def remove_database_connections_and_rollback ( name )
@@ -803,10 +763,42 @@ def remove_database_connections_and_rollback(name)
803763
804764
805765
806- private
766+ protected
807767
808768 # DATABASE STATEMENTS ======================================
809769
770+ def select ( sql , name = nil , ignore_special_columns = false )
771+ repair_special_columns ( sql ) unless ignore_special_columns
772+ fields , rows = raw_select ( sql , name )
773+ rows . inject ( [ ] ) do |results , row |
774+ row_hash = { }
775+ fields . each_with_index do |f , i |
776+ row_hash [ f ] = row [ i ]
777+ end
778+ results << row_hash
779+ end
780+ end
781+
782+ def insert_sql ( sql , name = nil , pk = nil , id_value = nil , sequence_name = nil )
783+ set_utf8_values! ( sql )
784+ super || select_value ( "SELECT SCOPE_IDENTITY() AS Ident" )
785+ end
786+
787+ def update_sql ( sql , name = nil )
788+ set_utf8_values! ( sql )
789+ auto_commiting = @connection [ "AutoCommit" ]
790+ begin
791+ begin_db_transaction if auto_commiting
792+ execute ( sql , name )
793+ affected_rows = select_value ( "SELECT @@ROWCOUNT AS AffectedRows" )
794+ commit_db_transaction if auto_commiting
795+ affected_rows
796+ rescue
797+ rollback_db_transaction if auto_commiting
798+ raise
799+ end
800+ end
801+
810802 def raw_execute ( sql , name = nil , &block )
811803 log ( sql , name ) do
812804 if block_given?
0 commit comments