【发布时间】:2017-07-14 14:17:35
【问题描述】:
我无法转换这个字符串,谁能帮帮我?
[WebMethod]
public void InsertUsuario(string usuario, string senha, string nome, string dtnasc, string fone, string email, int oab, string endereco, string bairro, string cep, int codcidade, string cpf, string cnpj)
{
using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
{
string chav = "asfasdf";
DateTime d = DateTime.ParseExact(dtnasc, "yyyy'-'MM'-'dd'T'HH':'mm", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal);
SqlCommand command = new SqlCommand("INSERT Into Usuarios (IdUsuario, Usuario, Senha, Nome, Chave, DtNasc, Fone, Email, OAB, Endereco, Bairro, CEP, CodCidade, CPF, CNPJ) VALUES ((Select MAX(idusuario)+1 from Usuarios), '" + usuario + "', '" + senha + "', '" + nome + "', '" + chav + "', '"+d+ "', '" + fone + "', '" + email + "', " + oab + ", '" + endereco + "', '" + bairro + "', '" + cep + "', " + codcidade + ", '" + cpf + "','"+cnpj+"')");
//command.Parameters.Add("@dtnasc", SqlDbType.DateTime).Value = DateTime.Now;
command.Connection.Open();
command.ExecuteNonQuery();
}
}
这是出现的错误:
System.FormatException: Cadeia de caracteres não foi reconhecida como DateTime válido.
em System.DateTimeParse.ParseExact(String s, String format, DateTimeFormatInfo dtfi, DateTimeStyles style)
em OniPresenteAPI.oni.InsertUsuario(String usuario, String senha, String nome, String dtnasc, String fone, String email, Int32 oab, String endereco, String bairro, String cep, Int32 codcidade, String cpf, String cnpj)
【问题讨论】:
-
请使用参数化 SQL。您对 SQL 注入攻击完全开放。不仅如此,如果你使用参数化 SQL,它甚至可以解决这个问题,因为将字符串连接在一起形成一个 SQL 脚本非常容易出错,就像你得到的那样。
-
除了sql注入问题,还有哪些字符串无法解析?你甚至没有展示一个例子。
-
dtnasc 的确切值是多少?
-
您传入的日期时间到底是什么样的?使用
DateTime.ParseExact()方法需要您完全匹配该格式。您目前在 DateTime 字符串中的每个部分都用单引号括起来,但开头和结尾除外,所以我认为 that 可能是一个问题,但没有示例,我们只是猜测。 .. -
我试图传递的值是:“1991-12-21 00:00”
标签: sql asp.net-mvc web-services datetime