使用 ODBC 将任何结果集格式化为 JSON
我正在开发一个客户端接口,它可以通过在输入字段和服务器端传递所需的查询来连接到任何数据库(用 C 编码并使用 sql.h),解析此查询并以 JSON 格式返回内容。我可以通过使用 Select * from tablename 查询轻松完成此操作,因为我可以使用 count(*) 查询获取行数,并将其与 for 循环一起使用以将 JSON 打印到缓冲区中。我如何对其他查询完成相同的操作?
我在某处读到,按行绑定可能会有所帮助,但是将结果集解析为 json 格式背后的逻辑是什么? (假设我需要按行格式的数据。示例:{“记录”:[[“列标题 1”,“列标题 2”,“列标题 3”],[“行”内容 1","行内容 2","行内容 3"]...]}
)
I am working on a client interface that can connect to any DB by passing the desired query in an input field and the server side (coded in C and using sql.h), parses this query and returns content in JSON format. I am able to accomplish this easily by using Select * from tablename query as i am able to get the number of rows using the count(*) query and i use this with a for loop to print my JSON into a buffer. How am i to accomplish the same for anyother query?
I read up somewhere that row-wise binding might help but whats the logic behind parsing a resultset into a json format? (under the assumption that i need the data in a row-wise format. example : {"Records" : [["col heading 1", "col heading 2", "col heading 3"], ["row content 1", "row content 2", "row content 3"]...]}
)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
ODBC 仅提供一种方法 (
SQLRowCount
) 来查找UPDATE
/DELETE
/INSERT
受影响的行数声明 - 请参阅 http://msdn.microsoft.com/en-us/library/ms711835%28v=VS.85%29.aspx...如果您想找出 < 的行数code>SELECT 您可以使用
SELECT COUNT(*)
再次执行查询,或者只是循环遍历结果集并对 ODBC 提供的行进行计数...请参阅 http://social.msdn.microsoft.com/Forums/en/vcgeneral/thread/6fe5403d-900c-4b07-9d00-1f42731b5602
和 如何使用 ODBC 连接在 PHP 中获取结果集中的计数或行数?
注意:虽然第二个链接提到了 PHP,但答案与语言无关,因为该行为的原因在于 ODBC 标准和使用的 ODBC 驱动程序。
ODBC only offers a way (
SQLRowCount
) to find out the number of affected rows forUPDATE
/DELETE
/INSERT
Statements - see http://msdn.microsoft.com/en-us/library/ms711835%28v=VS.85%29.aspx...IF you want to find out the number of rows of a
SELECT
you either execute the query a second time asSELECT COUNT(*)
OR you just loop over the result set and count the rows ODBC delivers...see http://social.msdn.microsoft.com/Forums/en/vcgeneral/thread/6fe5403d-900c-4b07-9d00-1f42731b5602
and How to Get The Count or The Number Of Rows In A Result Set In PHP using ODBC Connection?
NOTE: Although the second link mentions PHP, the answer is language-agnostic since the cause of the behaviour lies in the ODBC standard and the used ODBC driver.