2010-05-10 4 views
1

아래의 SP를 사용하여 Generated Insert 문의 값을 반환하고 쿼리 브라우저에서 실행하면 올바르게 작동합니다.C#에서 MySQL로 쿼리가 System.Byte []를 반환합니다.

C#에서 값을 가져 오려고하면 리턴 값으로 System.Byte []를 사용합니다. MySql 쿼리 브라우저에서 값을 가져 오려고하면 반환 값은 다음과 같습니다.

'adm32.accounts 값 ("54321", "2", "karthik2", "karthik2", "1 "); '

문제는 반환 값의 작은 따옴표가있는 것 같습니다. 그렇지?

DELIMITER $$ 

DROP PROCEDURE IF EXISTS `admindb`.`InsGen` $$ 
CREATE DEFINER=`root`@`localhost` PROCEDURE `InsGen`(
in_db varchar(20), 
in_table varchar(20), 
in_ColumnName varchar(20), 
in_ColumnValue varchar(20) 
) 
BEGIN 

declare Whrs varchar(500); 
declare Sels varchar(500); 
declare Inserts varchar(2000); 
declare tablename varchar(20); 
declare ColName varchar(20); 


set tablename=in_table; 


# Comma separated column names - used for Select 
select group_concat(concat('concat(\'"\',','ifnull(',column_name,','''')',',\'"\')')) 
INTO @Sels from information_schema.columns where table_schema=in_db and table_name=tablename; 


# Comma separated column names - used for Group By 
select group_concat('`',column_name,'`') 
INTO @Whrs from information_schema.columns where table_schema=in_db and table_name=tablename; 


#Main Select Statement for fetching comma separated table values 

set @Inserts=concat("select concat('insert into ", in_db,".",tablename," values(',concat_ws(',',",@Sels,"),');') 
as MyColumn from ", in_db,".",tablename, " where ", in_ColumnName, " = " , in_ColumnValue, " group by ",@Whrs, ";"); 

PREPARE Inserts FROM @Inserts; 

EXECUTE Inserts; 

END $$ 

DELIMITER ; 
+0

연결 설정에이 값을 추가하면 트릭이 수행됩니다. 이진 플래그는 false입니다. – Anuya

답변

5

연결 설정에 추가하면 트릭 : respect binary flag = false;

+0

데이터 집합 행 값을 검색 할 때 비슷한 문제가 발생했습니다. 영향을받는 필드는 DateTime 필드였으며 필드 값 대신 System.Byte [] 만 반환합니다. 언급 한 문자열을 추가하면 문제가 해결됩니다. –

+0

@Anuya +1 그걸로, 그것은 매력처럼 일했습니다! DateTime 필드가 실제 날짜 값 대신 System.Byte []를 반환하는 동일한 문제가있었습니다. 이 플래그는 어떤 기능을합니까? – indago

관련 문제