waj*_*000 0 c# sql-server asp.net asp.net-mvc
我是ASP.NET的新手,我需要你的专家帮助来解决这个问题.我正在使用ASP.NET MVC 5和SQL Server.我尝试使用SQL将一些数据插入数据库,这是我的查询
INSERT INTO tem (Telephone, Status, CreateDate)
VALUES ('" + telephone + "','"+ status +"','" + DateTime.Now + "');
Run Code Online (Sandbox Code Playgroud)
它在localhost中工作正常但在我部署到服务器后它显示一条错误消息:
将varchar数据类型转换为日期时间数据类型会导致超出范围的值.该语句已终止.
我的DateTime.Now价值就像28/02/2016 8:45:45 AM.
如果我通过硬编码添加2016-02-28 8:45:45 AM那么它正在工作.
您需要使用参数化查询来解决SQL注入漏洞,并避免将您转换DateTime为经常导致问题的字符串.
使用这样的代码:
// define connection string and **PARAMETRIZED** insert query
string connectionStirng = ".....";
string insertQry = "INSERT INTO tem (Telephone, Status, CreateDate) VALUES (@Telephone, @Status, @CreateDate);";
// set up connection and command in using blocks
using (SqlConnection conn = new SqlConnection(connectionString))
using (SqlCommand cmd = new SqlCommand(insertQry, conn))
{
// define the parameters
cmd.Parameters.Add("@Telephone", SqlDbType.VarChar, 50).Value = telephone;
cmd.Parameters.Add("@Status", SqlDbType.VarChar, 20).Value = status;
cmd.Parameters.Add("@CreateDate", SqlDbType.DateTime).Value = DateTime.Now;
// open connection, execute query, close connection
conn.Open();
int rowsInserted = cmd.ExecuteNonQuery();
conn.Close();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
764 次 |
| 最近记录: |