为什么我的短信应用程序不写入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());
}
}
message.Data
返回没有ToString()
实现的SmsDeliverPdu
,因此将message.Data
连接到字符串将失败。
您需要插入message.Data.UserDataText
(或任何合适的)
我猜SmsDeliverPdu是从某个地方下载的库?快速搜索没有发现任何相关信息。但是错误消息通常是在Visual Studio中自动创建方法时抛出的默认错误。如果您编写了执行此操作的类,则无需返回并在ToString方法中编写任何代码。如果你从别人那里得到这个库,他们没有。
顺便说一下,您应该真正研究参数化查询。你的代码允许SQL注入