【发布时间】:2016-05-31 20:02:17
【问题描述】:
我有一个Database named: "alumno",其中包含以下列:
"rut" (varchar 30) PK
"nombre" (varchar 30)
"apellido" (varchar 30)
"fechaN" (varchar 15)
它们都具有非空函数。
每当我输入字母时,我都会收到一个 SQLException,说“fechaN”列的名称无效,但如果我输入数字,它运行得很好。这是我的代码:
public Boolean insertar(SqlConnection x, alumno a) {
String query = "INSERT INTO alumno (rut, nombre, apellido, fechaN) VALUES ('" + a.Rut + "','" + a.Nombre + "','" + a.Apellido + "'," + a.Fecha + ")";
comando = new SqlCommand(query, x);
int saber = comando.ExecuteNonQuery();
if (saber > 0) {
return true;
}
return false;
}
con = new conexion();
SqlConnection x = con.conectar();
String rut = txtRut.Text.Trim();
String nombre = txtNombre.Text.Trim();
String apellido = txtApellido.Text.Trim();
String fecha = txtfecha.Text.Trim();
alumno a = new alumno(rut, nombre, apellido, fecha);
try {
if (a.insertar(x, a)) {
MessageBox.Show("Ok");
} else {
MessageBox.Show("Error...");
}
} catch (SqlException ex) {
MessageBox.Show("..." + ex.Message);
}
}
con.desconectar();
x = null;
【问题讨论】:
-
“alumno”表的架构是什么?
-
您是否有一些带有嵌入单引号的值(例如名词)
-
您肯定想要使用参数化查询。它会让你的生活更轻松,而且它更加更加安全..
-
您在查询中缺少两个单引号:...,'" + a.Fecha + "').... 请使用参数化查询。
-
这就是为什么你永远不应该使用连接字符串构建查询的原因。如果你使用
Sql Server,也可以使用参数创建一个存储过程它更干净