为什么我的短信应用程序不写入SQL Server数据库?

本文关键字:SQL Server 数据库 我的 应用程序 为什么 | 更新日期: 2023-09-27 18:05:50

我正在构建一个windows服务形式的SMS应用程序,它在COM端口上侦听新消息,然后将消息写入SQL Server数据库。我正在使用一个名为GSMComm的第三方库来实现这一点。

问题是当我遍历从GSM调制解调器获得的消息集合,然后尝试将它们放入数据库时,它抛出一个异常

System.NotImplementedException:SmsDeliverPdu.ToString() not implemented.

有人能帮忙吗?

private void SMSGetter()
{
    Log("Getter Fired");
    //var message = GSM.ReadMessage(4);
    //GSM.ReadMessage(4);
    //TcpClientChannel client = new TcpClientChannel();
    //ChannelServices.RegisterChannel(client, false);
    //string url = "192.168.100.67:2000";
    //ISmsSender smssender = (ISmsSender)Activator.GetObject(typeof(ISmsSender), url);
    try
    {
        DecodedShortMessage[] messages = Comm.ReadMessages(PhoneMessageStatus.All, PhoneStorageType.Sim);
        SqlConnection Conn = new SqlConnection("Data Source=*******;Initial Catalog=****;User ID=*****;Password=*************");
        SqlCommand com = new SqlCommand();
        com.Connection = Conn;
        Conn.Open();
        foreach (DecodedShortMessage message in messages)
        {
           com.CommandText = ("INSERT INTO SMSArchives(Message,Blacklist) VALUES ('" +message.Data + "', 'Yes')");
           com.ExecuteNonQuery();
           //com.CommandText = ("INSERT INTO SMSArchives(Message,Blacklist) VALUES (@par1,@par2)");
           //com.Parameters.AddWithValue("@par1", message.ToString());
           //com.Parameters.AddWithValue("@par2", "Yes");
           //com.ExecuteNonQuery();
        }
        Conn.Close();
        return;
    }
    catch (Exception ex)
    {
        Log(ex.ToString());
    }
}

为什么我的短信应用程序不写入SQL Server数据库?

message.Data返回没有ToString()实现的SmsDeliverPdu,因此将message.Data连接到字符串将失败。

您需要插入message.Data.UserDataText(或任何合适的)

我猜SmsDeliverPdu是从某个地方下载的库?快速搜索没有发现任何相关信息。但是错误消息通常是在Visual Studio中自动创建方法时抛出的默认错误。如果您编写了执行此操作的类,则无需返回并在ToString方法中编写任何代码。如果你从别人那里得到这个库,他们没有。

顺便说一下,您应该真正研究参数化查询。你的代码允许SQL注入