我有数据进入我的模型,如何设置将数据插入表格?
public string Name { get; set; }
public string Address { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zip { get; set; }
public Info()
{
using (SqlConnection connect = new SqlConnection(connections))
{
string query = "Insert Into Personnel_Data (Name, StreetAddress, City, State, Zip, HomePhone, WorkPhone)" +
"Values('" + Name + "','" + Address + "','" + City + "','" + State + "','" + Zip + "','" + ContactHPhone + "','" + ContactWPhone + "')";
SqlCommand command = new SqlCommand(query, connect);
connect.Open();
command.ExecuteNonQuery();
}
}
运行查询时,Name,Address,City等为null。我该如何设置?
答案 0 :(得分:2)
在构造函数被调用并设置属性后,向构造函数中添加参数或从非构造函数方法执行Insert。
您提供的代码容易受到SQL注入攻击,因此您也需要修复它。
另外,从术语的角度来看,调用插入查询会让人感到困惑。查询是一个选择,这不是你正在做的。
您不需要存储过程或ORM,使用ADO.NET就可以了。您可能会发现使用ORM可以减少必须编写和维护的重复,容易出错的代码量,但使用ORM会有缺点。
答案 1 :(得分:1)
在使用它之前,需要在构造函数中初始化属性:
public string Name { get; set; }
public string Address { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zip { get; set; }
public string ContactHPhone { get;set; }
public string ContactWPhone { get;set; }
public Info(string name, string address, string city, string state, string zip, string contactHPhone, string contactWPhone)
{
Name = name;
Address = address;
City = city;
State = state;
Zip = zip;
ContactHPhone = contactHPhone;
ContactWPhone = contactWPhone;
using (SqlConnection connect = new SqlConnection(connections))
{
string query = "Insert Into Personnel_Data (Name, StreetAddress, City, State, Zip, HomePhone, WorkPhone)" +
"Values('" + Name + "','" + Address + "','" + City + "','" + State + "','" + Zip + "','" + ContactHPhone + "','" + ContactWPhone + "')";
SqlCommand command = new SqlCommand(query, connect);
connect.Open();
command.ExecuteNonQuery();
}
}
编辑:
更好的方法是在SQL字符串中使用参数:
using (SqlConnection connect = new SqlConnection(connections))
{
string query = "Insert Into Personnel_Data (Name, StreetAddress, City, State, Zip, HomePhone, WorkPhone) Values(@name, @address, @city, @state, @zip, @contactHPhone, @contactWPhone)";
SqlCommand command = new SqlCommand(query, connect);
command.Parameters.AddWithValue("name", Name);
command.Parameters.AddWithValue("address", Address);
command.Parameters.AddWithValue("city", City);
command.Parameters.AddWithValue("state", State);
command.Parameters.AddWithValue("zip", Zip);
command.Parameters.AddWithValue("contactHPhone", ContactHPhone);
command.Parameters.AddWithValue("contactWPhone", ContactWPhone);
connect.Open();
command.ExecuteNonQuery();
}
答案 2 :(得分:0)
如果您要坚持现有的方法,首先使用parametrized queries
我的建议是选择ORM NHibernate,这样可以为您轻松解决问题
答案 3 :(得分:0)
这看起来像是您要保留的对象的代码(您的模型。)接收更新并提交记录的代码将进入您的Controller。请从您的控制器发布代码。
另外,我强烈建议您考虑使用LINQ to SQL或LINQ to Entities等ORM。至少创建一个存储过程 - 不要将原始SQL发送到数据库。