总结:关于网站短信的收发和用户直接通过短信定制
上一次请教过大家用SQL的触发器能实现这种要求吗?"” ,虽然项目还没结束,但是短信方面的功能也差不多全部实现了,呵呵,虽然触发器的代码写的混,但算是好的参考资料.我会将我的一些了解全部写出来.
声明:因为我所在这家公司前公司已经跟移动方面达到了协议,并且有自己的短信平台,所以,至于短信服务器的搭建如何我不清楚
好像是通过移动方面某个程序转到移动网关上的.因此我只将关于网站如何通过移动方面的短信收发和用户直接通过短信来定制服务.
一,通过网站实现 短信的收发功能
实际上这个功能很简单,也就是sql server 数据库的利用.因为短信的服务器数据库也是SQL的.所以呢.我们要做的就是根据移动提供的特服号来连接短信服务器上数据库及可,用户的收发短信都是通过SQL 数据库里的box_mt 表来进行的.所有短信消息都是通过该表来执行,并且执行成功后会自动删除该记录,表的结构是:
用户每天短信记录,它是按当天的时候相应的存到表中,如
BOX_MT_LOG_01 一号的记录
BOX_MT_LOG_02 二号的记录
发送短信
Public Function getsession(ByVal handset_number As String) As String \'handset_number 为接收人手机号码
Dim rand As String
m_sqlconn = New SqlConnection(m_sqlprov)\'链接数据库存量
rand = "你的验证码是:" & Left((10000 * Rnd()).ToString, 4)
Dim sqlsele As String = "insert into box_mt (objtype,mobile,message,sender,servicetype,feetype,feevalue) values (\'公安信息化\',\'" & handset_number & "\',\'" & rand & "\',\'09***+110\',\'CKCZ\',\'1\',\'0\')" \'09***为特服号
m_sqlcomm = New SqlCommand(sqlsele, m_sqlconn)
m_sqlconn.Open()
m_sqlcomm.ExecuteNonQuery()
m_sqlconn.Close()
Return rand
End Function
就这么简单发送成功.
二.用户通过手机的短信来判断
刚开始我一直想不明白怎么样接收用户能过手机发送过来的短消息.而且想了几天都没想明白.后来问移动方面的技术员只告诉我\'实时监控数据表\'.我总感觉移动的技术员在误导我:(
后来我问我朋友开发一个监控系统对系统的性能影响有多大时才被告之可以用sql 的触发器,
虽然用sql时间也有几个月了,但很少用触发器这类的,最多就是写写存储过程,至于相关的内容可以查看用SQL的触发器能实现这种要求吗?"” 都有了说明.
下面是我写的触发器,因为对sql的语法不熟悉,代码实在是惨不人?
declare @mboile varchar(50)--手机登陆号
SELECT * into #a FROM dbo.FunSplitStringToAraay(\'LSGB#449686695753130#摩托罗拉V200#郑春#0578-8926797#332528198502082412#\',\'#\')
--select * from #a
if @@error >0
goto needrollback
declare mmp cursor
local scroll static
for select string from #a
open mmp /*建立cursor与查询数据的关联*/
declare @a1 varchar(50),@a2 varchar(50),@a3 varchar(50),@a4 varchar(50),@a5 varchar(50)
declare @a6 varchar(100),@temp varchar(100)
--a1:lsgc,a2:手机串号,a3:手机型号,a4机主名字,a5:电话号码,a6:身份证号码
declare @cnt int
select @cnt=0
fetch next from mmp into @temp
set @a1=@temp
while (@@FETCH_STATUS=0)--检查是否读取到数据
begin
set @cnt=@cnt+1
fetch next from mmp into @temp
if @cnt=1 set @a2=@temp
if @cnt=2 set @a3=@temp
if @cnt=3 set @a4=@temp
if @cnt=4 set @a5=@temp
if @cnt=5 set @a6=@temp
end
--fetch next from mmp into @temp
--set @a6=@temp
print @a1
print @a2
print @a3
print @a4
print @a5
print @a6
if upper(@a1)=\'LSGA\'
begin
if EXISTS(select * from handset_enrol where handset_number=@a2)--如果该手机已经登记
print \'您的手机串号已经被登入,请确定您输入的串号是否正确\'
else
insert into handset_enrol (handset_number,handset_type,user_name,user_phone,user_idcard) values (@a2,@a3,@a4,@a5,@a6)
--插入用户编辑的短信内容到表handset_enrol
--发送短信息向用户告诉成功
end
if upper(@a1)=\'LSGB\'
begin
if EXISTS(select * from handset_disp where handset_number=@a2)--如果该手机已经挂失
print \'您的手机已被挂失,请确定您输入的串号是否正确\'
else
insert into handset_disp (handset_number,handset_type,user_name,user_phone,user_idcard) values (@a2,@a3,@a4,@a5,@a6)
--插入用户编辑的短信内容到表handset_disp
--发送短信息向用户告诉成功if upper(@a1)=\'LSGC\'--查找用户的手机
end
if upper(@a1)=\'LSGC\'
begin
if EXISTS(select * from handset_find where handset_number=@a2)
print \'您的手机已经找回,请您与我们手机防盗中心取得联系,联系电话:0578-*******\'
else
print \'您遗失的手机未被寻回,请您耐心等待\'
end
drop table #a
上面的只是我测试用的.到时会做应修改.
感觉文章写的比较混乱,等我过几天又有好的思路时再整理一下:)
声明:因为我所在这家公司前公司已经跟移动方面达到了协议,并且有自己的短信平台,所以,至于短信服务器的搭建如何我不清楚
一,通过网站实现 短信的收发功能
实际上这个功能很简单,也就是sql server 数据库的利用.因为短信的服务器数据库也是SQL的.所以呢.我们要做的就是根据移动提供的特服号来连接短信服务器上数据库及可,用户的收发短信都是通过SQL 数据库里的box_mt 表来进行的.所有短信消息都是通过该表来执行,并且执行成功后会自动删除该记录,表的结构是:
|
id |
1 |
|
Areaid |
578(默认为578,这个是按你地区定的) |
|
Objtype |
房产验证码(随便填) |
|
|
139********(接受人号码) |
|
Message |
天气很好 |
|
Sender |
09*** + …..(移动提供的特服号,也相当于端口) |
|
Feemobile |
139******(如果为空,则和Mobile一样) |
|
Servicetype |
CKCZ |
|
Feetype |
2(如果包月,此处为3,1为免费,2为收费) |
|
Feevalue |
20(费用为2毛)这个是钱,按分来计算的, |
|
Givenvalue |
0 (一般都是为0) |
|
Motomtflag |
0(如果feetype 包月该为3) |
|
Reportflag |
0(如果feettype包月该为3) |
|
Msgtype |
0(0(短信类别,是图片还是纯文字等) |
|
createtime |
2004-3-3 |
BOX_MT_LOG_01 一号的记录
BOX_MT_LOG_02 二号的记录
发送短信
Public Function getsession(ByVal handset_number As String) As String \'handset_number 为接收人手机号码
Dim rand As String
m_sqlconn = New SqlConnection(m_sqlprov)\'链接数据库存量
rand = "你的验证码是:" & Left((10000 * Rnd()).ToString, 4)
Dim sqlsele As String = "insert into box_mt (objtype,mobile,message,sender,servicetype,feetype,feevalue) values (\'公安信息化\',\'" & handset_number & "\',\'" & rand & "\',\'09***+110\',\'CKCZ\',\'1\',\'0\')" \'09***为特服号
m_sqlcomm = New SqlCommand(sqlsele, m_sqlconn)
m_sqlconn.Open()
m_sqlcomm.ExecuteNonQuery()
m_sqlconn.Close()
Return rand
End Function
就这么简单发送成功.
二.用户通过手机的短信来判断
刚开始我一直想不明白怎么样接收用户能过手机发送过来的短消息.而且想了几天都没想明白.后来问移动方面的技术员只告诉我\'实时监控数据表\'.我总感觉移动的技术员在误导我:(
下面是我写的触发器,因为对sql的语法不熟悉,代码实在是惨不人?
declare @mboile varchar(50)--手机登陆号
SELECT * into #a FROM dbo.FunSplitStringToAraay(\'LSGB#449686695753130#摩托罗拉V200#郑春#0578-8926797#332528198502082412#\',\'#\')
--select * from #a
if @@error >0
goto needrollback
declare mmp cursor
local scroll static
for select string from #a
open mmp /*建立cursor与查询数据的关联*/
declare @a1 varchar(50),@a2 varchar(50),@a3 varchar(50),@a4 varchar(50),@a5 varchar(50)
declare @a6 varchar(100),@temp varchar(100)
--a1:lsgc,a2:手机串号,a3:手机型号,a4机主名字,a5:电话号码,a6:身份证号码
declare @cnt int
select @cnt=0
fetch next from mmp into @temp
set @a1=@temp
while (@@FETCH_STATUS=0)--检查是否读取到数据
begin
set @cnt=@cnt+1
fetch next from mmp into @temp
if @cnt=1 set @a2=@temp
if @cnt=2 set @a3=@temp
if @cnt=3 set @a4=@temp
if @cnt=4 set @a5=@temp
if @cnt=5 set @a6=@temp
end
--fetch next from mmp into @temp
--set @a6=@temp
print @a1
print @a2
print @a3
print @a4
print @a5
print @a6
if upper(@a1)=\'LSGA\'
begin
if EXISTS(select * from handset_enrol where handset_number=@a2)--如果该手机已经登记
print \'您的手机串号已经被登入,请确定您输入的串号是否正确\'
else
insert into handset_enrol (handset_number,handset_type,user_name,user_phone,user_idcard) values (@a2,@a3,@a4,@a5,@a6)
--插入用户编辑的短信内容到表handset_enrol
--发送短信息向用户告诉成功
end
if upper(@a1)=\'LSGB\'
begin
if EXISTS(select * from handset_disp where handset_number=@a2)--如果该手机已经挂失
print \'您的手机已被挂失,请确定您输入的串号是否正确\'
else
insert into handset_disp (handset_number,handset_type,user_name,user_phone,user_idcard) values (@a2,@a3,@a4,@a5,@a6)
--插入用户编辑的短信内容到表handset_disp
--发送短信息向用户告诉成功if upper(@a1)=\'LSGC\'--查找用户的手机
end
if upper(@a1)=\'LSGC\'
begin
if EXISTS(select * from handset_find where handset_number=@a2)
print \'您的手机已经找回,请您与我们手机防盗中心取得联系,联系电话:0578-*******\'
else
print \'您遗失的手机未被寻回,请您耐心等待\'
end
drop table #a
上面的只是我测试用的.到时会做应修改.
感觉文章写的比较混乱,等我过几天又有好的思路时再整理一下:)