asp.net查询数据库时提示使用的sql server版本不支持数据类型date

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net查询数据库时提示使用的sql server版本不支持数据类型date相关的知识,希望对你有一定的参考价值。

ASP中有个SqlDataSource1,GridView1只有这两个控件。但是在sql server2005中表里面的时间数据类型本来就是datetime。SqlDataSource1或GridView1怎么设置数据类型为datetime?怎么修改asp中的数据类型为datetime?

参考技术A 打开页面,切换到源视图状态,找到GridView绑定的数据源SqlDataSource1,找到代码
<UpdateParameters>
<asp:Parameter
Name="Name"
Type="String"
/>
<asp:Parameter
Name="Sex"
Type="String"
/>
<asp:Parameter
Name="Class"
Type="String"
/>
<asp:Parameter
Name="QQ"
Type="String"
/>
<asp:Parameter
Name="Phone1"
Type="String"
/>
<asp:Parameter
Name="Phone2"
Type="String"
/>
<asp:Parameter
Name="Room"
Type="String"
/>
<asp:Parameter
Name="E_mail"
Type="String"
/>
<asp:Parameter
DbType="Date"
Name="Time"
/>
<asp:Parameter
Name="About"
Type="String"
/>
<asp:Parameter
Name="Member_id"
Type="String"
/>
</UpdateParameters>
将其中Name为Time的所在行的
DbType="Date"
修改成
DbType="DateTime"

防止SQL注入

最根本的就是sql查询参数化

1.使用ORM-LINQ
2.如果使用SQL:
(1)前端数据验证
(2)接口参数验证:强类型
(3)使用sql时使用Sql对应帮助类进行sql参数化,比如:


//在ASP.NET程序中使用参数化查询
 
//ASP.NET环境下的查询化查询也是通过Connection对象和Command对象完成。如果数据库是SQL Server,就可以用有名字的参数了,格式是“@”字符加上参数名。
 
SqlConnection conn = new SqlConnection("server=(local)\\\\SQL2005;user id=sa;pwd=12345;initial catalog=TestDb");
conn.Open();
 
SqlCommand cmd = new SqlCommand(“SELECT TOP 1 * FROM [User] WHERE UserName = @UserName AND Password = @Password“);
cmd.Connection = conn;
cmd.Parameters.AddWithValue(”UserName”, “user01″);
cmd.Parameters.AddWithValue(”Password”, “123456″);
 
SqlDataReader reader = cmd.ExecuteReader();
reader.Read();
int userId = reader.GetInt32(0);
 
reader.Close();

(4)正则表达式验证、对字符串进行过滤

参考资料

使用StringBuilder与SqlParameter
如何从根本上防止 SQL 注入?
SQL参数化查询

以上是关于asp.net查询数据库时提示使用的sql server版本不支持数据类型date的主要内容,如果未能解决你的问题,请参考以下文章

Directory.Exists 用于 ASP.NET 中的网络路径

ASP.NET SQL 查询未返回预期结果

asp.net提示使用的 SQL Server 版本不支持数据类型“date”

使用asp.net mv在ado.net中选择带有where子句的查询

为啥通过 ASP.NET 方法运行查询比原生 SQL 需要更长的时间?

高效的asp.net sql查询