在开发短信系统的时候,碰到接收时需要回调,因本人新手,不了解回调,按着示例代码(就是下面的代码),可以弹出对话框显示接收的信息,但是不知道怎么吧这些信息存到数据库中,请大家指教,详细代码如下:
// 引用接收短信DLL
[DllImport("EUCPComm.dll", EntryPoint = "ReceiveSMS")]
public static extern int ReceiveSMS(string sn, deleSQF mySmsContent);
public delegate void deleSQF(string mobile, string senderaddi, string recvaddi, string ct, string sd, ref int flag);
deleSQF mySmsContent = new deleSQF(getSMSContent);
//再此处,可弹出对话框显示短信内容
static void getSMSContent(string mobile, string senderaddi, string recvaddi, string ct, string sd, ref int flag)
{
string mob = mobile;
string content = ct;
int myflag = flag;
MessageBox.Show( mobile + "/" + ct + "/" + sd );
}
//这是单击按钮接收
private void button5_Click(object sender, EventArgs e)
{
deleSQF mySmsContent = new deleSQF(getSMSContent);
//接收短信 序列号 函数指针
int result = 2;
while (result == 2) //当result = 2 时,说明还有下一批短信等待接收,这时需重新再调用一次ReceiveSMS方法
{
result = ReceiveSMS(textBox1.Text, mySmsContent);
if (result == 1)
{
textBox3.Text += "接收短信成功'"+DateTime.Now.ToString()+"'\r\n";
//ReceiveMsg recMsg = new ReceiveMsg();
}
else if (result == 101)
{
textBox3.Text += "网络故障'" + DateTime.Now.ToString() + "'\r\n";
}
else if (result == 102)
{
textBox3.Text += "其它故障'" + DateTime.Now.ToString() + "'\r\n";
}
else if (result == 105)
{
textBox3.Text += "参数指针为空'" + DateTime.Now.ToString() + "'\r\n";
}
else if (result == 0)
{
textBox3.Text += "失败'" + DateTime.Now.ToString() + "'\r\n";
}
else if (result == -1)
{
textBox3.Text += "未知故障'" + DateTime.Now.ToString() + "'\r\n";
}
}
}
现在我的需求就是将接收到的信息存到数据库里面,如果有多条接收,则循环执行,存到数据库的代码如下:
//mobile=手机号 ,ct=内容 ,sd=时间
Class1.ExecuteSql("insert into recSMS(mobile ,ct,sd ) values ('"mobile"' ,+ '"ct"' + '"sd"' )")
请问这句该些到哪里,如何做,我试了很多次,都不行,希望大家帮助,谢谢!
再网上看到一个这样的帖子,应该和我的问题类似http://topic.csdn.net/t/20051128/11/4422514.html,应该是定义一个结构体,但没写具体的方法,那位帮忙看看,,谢谢
static void getSMSContent(string mobile, string senderaddi, string recvaddi, string ct, string sd, ref int flag)
{
string mob = mobile;
string content = ct;
int myflag = flag;
MessageBox.Show( mobile + "/" + ct + "/" + sd );//写在这里吧!!
}
回调函数:它是定义了deleSQF mySmsContent 由它来接受传递来的参数,
你用getSMSContent(....)实例化了它、所以。在getSMSContent里面你才可以接受dll传递过来的参数、你要不想在这操作的话,你可以先在这做一些处理,比如定义一个数据集dataset,在这填充,然后再其他的地方处理。
一直用asp.net写东西,我估计写了你也看不懂!关注吧!看谁用c#写出来!