访问多列Mysql存储过程 [英] Access multiple columns Mysql Stored Procedure

查看:80
本文介绍了访问多列Mysql存储过程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试动态访问列,当我选择两列时,它工作正常,但是当我尝试选择第三列时,它给出了错误,C#语法如下,

I am trying to access columns dynamically, It works fine when i select two columns, but when i try to elect the third it gives an eror, the C# syntax is as follows,

string connStr = "Server=localhost;Database=db_pentest;Uid=root;Pwd=#901770026V;";
        bool found = false;
        MySqlConnection conn = new MySqlConnection(connStr);

        conn.Open();

        MySqlCommand cmd;

        cmd = conn.CreateCommand();
        
        cmd.CommandText = "dynamicCols";//call stored procedure
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add(new MySqlParameter("@col", "country,IPRStart,IPREnd"));
                
        MySqlDataReader readIp = cmd.ExecuteReader();



我得到的错误是,



The error i get is,

Unknown column 'IPR' in 'field list'



存储过程如下所示,



The stored procedure goes something like this,

SET @sql = CONCAT('SELECT ', col, ' FROM ..



将要通过的列名传递到该单个col参数.但这不会让我发送两个以上的邮件..它切断了IPREnd的尾随章程..
您能帮我吗..我正在这样做,因为我需要随时选择随机列.非常感谢:)



where is pass the column names i wan to select to that single col parameter. but it wont let me send more than two.. it cuts off the trailing charters of IPREnd..??
can you please help me on this..i''m doing it in this way because i need to select random columns whenever i want. Thank you very much :)

推荐答案

最可能的原因是存储过程中的col参数长度太小.因此,请尝试在过程定义中增加该参数的长度.
The likeliest reason is that the col parameter in your stored procedure is too small in length. So try increasing the length of that parameter in your procedure definition.


检查您的@col数据类型.我认为您在varchar(20)中使用的字符较少.
但是您输入的内容超过20个.
``国家/地区,IPRStart,IPREnd''= 23个字符
因此,您的输入会变小,因此需要先输入20个字符.
试试这个varchar(max);或一些大值,例如100
Check your @col data type. I think you have used less character in varchar(20).
But you input is hvaing more than 20 chracter.
''country,IPRStart,IPREnd'' = 23 character
So your input is get shrink so it is taking first 20 chracter.
Try this varchar(max); or some big value like 100


这篇关于访问多列Mysql存储过程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆