我在Visual Studio中使用SQL时数据库存在convserion错误.我使用的数据库是一个普通的sql server数据库.这是我的任务.这是我的查询方法是我的webservice[WebMethod]public bool search(string ddate, string dairpo...
![](https://oss.womengda.net/imgfile/2310/1ER2FV2E60-24X5.jpg)
我在Visual Studio中使用SQL时数据库存在convserion错误.
我使用的数据库是一个普通的sql server数据库.
这是我的任务.
这是我的查询方法是我的webservice
[WebMethod]
public bool search(string ddate, string dairport, string aairport, string seat)
{
int seat2 = Convert.ToInt32(seat);
DateTime date = Convert.ToDateTime(ddate);
String query1 = "SELECT * FROM Flight_Schedule S WHERE S.departure_date = '24/09/2011'";
using (SqlConnection connect = new SqlConnection(conn))
{
SqlCommand cmd = new SqlCommand(query1, connect);
connect.Open();
SqlDataReader result = cmd.ExecuteReader();
try
{
if (result.Read())
{
return true;
}
finally
{
result.Close();
connect.Close();
connect.Dispose();
}
return false;
}
}
普通查询没有问题,例如:
"SELECT * FROM Flight_Schedule S WHERE S.origin_airport_code = '" + dairport + "'";
错误:
System.Data.SqlClient.SqlException: Conversion failed when converting date and/or time from character string.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.HasMoreRows()
at System.Data.SqlClient.SqlDataReader.ReadInternal(Boolean setTimeout)
at System.Data.SqlClient.SqlDataReader.Read()
at AirportService.AirportServices.search(String ddate, String dairport, String aairport, String seat) in C:\Users\XXXXX\Documents\Visual Studio 2010\Projects\WebService2\AirportService\AirportServices.asmx.cs:line 47
解决方法:
您应该在C#中处理日期时间解析逻辑(以您接受的格式),并将其作为参数传递,即
String query1 = "SELECT * FROM Flight_Schedule S WHERE S.departure_date = @departureDate"
并添加一个SqlParameter与您想要的DateTime值;那样……没问题.没有解析数据库,没有注入风险.并且查询计划也重复使用.赢得全面.
例如:
DateTime when = DateTime.Parse(ddate); // better to use ParseExact and formally state the format you are using
const string query1 = "SELECT * FROM Flight_Schedule S WHERE S.departure_date = @departureDate";
using (SqlConnection connect = new SqlConnection(conn))
{
using (SqlCommand cmd = new SqlCommand(query1, connect))
{
cmd.Parameters.AddWithValue("departureDate", when);
connect.Open();
using (SqlDataReader result = cmd.ExecuteReader())
{
... etc
}
}
}
沃梦达教程
本文标题为:.net c#sql string到date转换错误
![](/xwassets/images/pre.png)
![](/xwassets/images/next.png)
猜你喜欢
- c# 常用框架汇总 2023-04-15
- #在Docker上部署自动更新ssl证书的nginx + .NET CORE 2023-09-27
- 详解C# 不能用于文件名的字符 2022-12-06
- Unity中 ShaderGraph 实现超级炫酷的溶解效果入门级教程 2023-04-27
- 关于C# 调用Dll 传递字符串指针参数的问题 2023-05-12
- C#比较日期的方法总结 2023-01-16
- C# 字符串的连接(实例讲解) 2022-12-01
- C#微信公众号开发之自定义菜单 2023-06-15
- C#中的应用程序接口介绍及实现,密封类与密封方法 2023-01-06
- C#使用System.Net.Mail类实现邮件发送 2023-06-21