【发布时间】:2011-02-17 12:12:09
【问题描述】:
我正在使用下面的 SP 来返回 Generated Insert 语句的值,并且在 Query 浏览器中执行时它工作正常。
当我尝试从 C# 获取值时,它给了我“System.Byte[]”作为返回值。 当我尝试从 MySql 查询浏览器中获取值时,它给了我返回值:
'插入到 admindb.accounts values("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 ;
【问题讨论】:
-
在连接设置中添加这个技巧:尊重二进制标志=假;
标签: c# mysql connection-string