C# Winform socket 如何发送 带 SqlParameter 的sql语句

txmrbfbj 2016-12-19 03:18:15
如题,我现在 有 客户端 服务端,用 socket通讯,客户端如何把 带参数的 sql语句发送到服务端,参数中有可能会有二进制类型

我的目的是 :客户端 把 sql语句发送给 服务端,服务端去执行,
现在 sql语句 有参数,参数的值可能有二进制
...全文
580 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
txmrbfbj 2017-01-03
  • 打赏
  • 举报
回复
引用 19 楼 ay363698115 的回复:
[quote=引用 8 楼 MSTOP 的回复:] [quote=引用 3 楼 shingoscar 的回复:] 可以用WCF,传输的事情底层会帮你搞定的
SQL的参数化查询是不能序列化的。只能手工序旬化。[/quote] 请问有没有sqlparameter序列化的例子,我用的是webservice,正在焦虑这个问题,请大师帮忙[/quote] webservice 不是这么做的,和自己写socket 不一样
txmrbfbj 2017-01-03
  • 打赏
  • 举报
回复
引用 19 楼 ay363698115 的回复:
[quote=引用 8 楼 MSTOP 的回复:] [quote=引用 3 楼 shingoscar 的回复:] 可以用WCF,传输的事情底层会帮你搞定的
SQL的参数化查询是不能序列化的。只能手工序旬化。[/quote] 请问有没有sqlparameter序列化的例子,我用的是webservice,正在焦虑这个问题,请大师帮忙[/quote] 解决了,大概和 10 12 16 楼说的方式差不多
飞天凤凰601 2016-12-21
  • 打赏
  • 举报
回复
我就奇了怪了,难道不能直接传字串过去,哪边识别(当然有协议),直接执行SQL语句就行了, 不知道我这样想,有什么问题?
ay363698115 2016-12-21
  • 打赏
  • 举报
回复
引用 8 楼 MSTOP 的回复:
[quote=引用 3 楼 shingoscar 的回复:] 可以用WCF,传输的事情底层会帮你搞定的
SQL的参数化查询是不能序列化的。只能手工序旬化。[/quote] 请问有没有sqlparameter序列化的例子,我用的是webservice,正在焦虑这个问题,请大师帮忙
足球中国 2016-12-21
  • 打赏
  • 举报
回复
我的博客里面有:http://blog.csdn.net/zanfeng/article/details/46580817 里面实现了远程数据库访问。比如mysql,oracle等本地不需要安装mysql,oracle客户端.当然你要的这个也有。 我实现的方式是自己实现序列化。也就是二进制流。
dai78 2016-12-21
  • 打赏
  • 举报
回复
字符串-》十六进制 -》发送-》接收十六进制-》转换成字符串
daidai_xiaomo 2016-12-21
  • 打赏
  • 举报
回复
传带参sql和不带参sql对于socket应该没关系把 有参无参只和你接受后的解析有关系的,这个和你传过去的定义规则有关
t_kong 2016-12-21
  • 打赏
  • 举报
回复
傳輸規格定義好,如:正文開始+SELECT * FROM A+正文結束; 然後Socket,有重連機制,事件觸發指令就好。
by_封爱 版主 2016-12-20
  • 打赏
  • 举报
回复
你既然传过去了sql语句,那么为什么不能把参数也传过去? 这就涉及到了你所谓的"通讯协议" 比如 你传过去一个 { "sql":"select * from table" } 那么你接收到后 可以执行. 但是你说你需要par 那么你就传过去par啊. { "sql": "select * from @table", "par": { "table": "userinfo" } } 至于你如何构造你的协议体 或者 你如何解析 那是你自己的事了..跟socket无关...
  • 打赏
  • 举报
回复
引用 楼主 txmrbfbj 的回复:
如题,我现在 有 客户端 服务端,用 socket通讯,客户端如何把 带参数的 sql语句发送到服务端,参数中有可能会有二进制类型 我的目的是 :客户端 把 sql语句发送给 服务端,服务端去执行, 现在 sql语句 有参数,参数的值可能有二进制
你的通信信令是如何设计的,如果表示消息内容? 消息内容中你可以传送一个 json 标识的数据结构。你用什么数据结构来表示sql和参数? 这需要你自己设计。你能稍微有点概念,先自己设计出来信令格式,再来问。
zj_zwl 2016-12-20
  • 打赏
  • 举报
回复
传什么看你自己了,可以序列化,也可以自定义格式,接收后"翻译"下不就得了!
华芸智森 2016-12-20
  • 打赏
  • 举报
回复
自定义序列化,就是提取重要的且必要的属性和字段 。 SQL参数化的几个属性,字段是: 1.命令行。就是SQL语句。如: SELECT * FROM TABLE WHERE FIELD=@ID 2. { (参数名称,参数值,参数类型,参数长度) ,(参数名称,参数值,参数类型,参数长度) ...... } 这是一个数组。因为一个命 令可以有多个参数。 3.将这些值序列化成自已的格式,服务器再重装。然后执行. 抛开那些什么概念,相当于你自己定义一个参数化类,前台就是使用这个类来参数化操作,后台收到数所后就是实例化这个类,这个类再提供一个方法 -- ToSqlCmdParameter ,返回一个SQL的参数化命令.
brucel51 2016-12-20
  • 打赏
  • 举报
回复
通过二进制序列化协议数据对象来解决这个问题。SqlParameter你需要重构一个可序列化版本的自定义类
华芸智森 2016-12-20
  • 打赏
  • 举报
回复
引用 3 楼 shingoscar 的回复:
可以用WCF,传输的事情底层会帮你搞定的
SQL的参数化查询是不能序列化的。只能手工序旬化。
Poopaye 2016-12-19
  • 打赏
  • 举报
回复
引用 6 楼 txmrbfbj 的回复:
刚刚看了 wcf 的介绍,好麻烦啊,还要 2边同时用统一的 契约,各种限制,真不如 直接用 socket来的快
这。那微软岂不是没事找事么
txmrbfbj 2016-12-19
  • 打赏
  • 举报
回复
刚刚看了 wcf 的介绍,好麻烦啊,还要 2边同时用统一的 契约,各种限制,真不如 直接用 socket来的快
txmrbfbj 2016-12-19
  • 打赏
  • 举报
回复
引用 3 楼 shingoscar 的回复:
可以用WCF,传输的事情底层会帮你搞定的
WCF 没用过,需要IIS作为载体吗
txmrbfbj 2016-12-19
  • 打赏
  • 举报
回复
问答版,我也 提问了,如果有大大能帮我解决,那边也可以采纳,分也一样给 http://ask.csdn.net/questions/352831 悬赏也是100
Poopaye 2016-12-19
  • 打赏
  • 举报
回复
可以用WCF,传输的事情底层会帮你搞定的
txmrbfbj 2016-12-19
  • 打赏
  • 举报
回复
引用 1 楼 shingoscar 的回复:
[quote=引用 楼主 txmrbfbj 的回复:] 参数的值可能有二进制
socket本来就只能传输2进制数据,问反了吧[/quote] 我知道 socket传输的 是二进制,我想问的是 带参数的 sql语句 如何把语句和 参数值一起传过去,服务端要 还原 sql语句和参数
加载更多回复(1)

111,107

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧