C# 将文本框值插入数据库表
向SQL Server表中插入文本框值的最简单和最类似SQL的方法是什么?我找到了几种方法,但对于我想做的这件简单的事情来说,它们都太复杂了。如果您想快速完成某件事情,请使用LINQ to SQL。它将负责您的数据访问层和业务对象 只需转到VisualStudio上的LINQtoSQL类,映射您的SQL服务器并向其中添加任何您想要的表 然后,您可以使用它在代码隐藏中创建的对象来更新文本框中的值C# 将文本框值插入数据库表,c#,asp.net,sql,sql-server,C#,Asp.net,Sql,Sql Server,向SQL Server表中插入文本框值的最简单和最类似SQL的方法是什么?我找到了几种方法,但对于我想做的这件简单的事情来说,它们都太复杂了。如果您想快速完成某件事情,请使用LINQ to SQL。它将负责您的数据访问层和业务对象 只需转到VisualStudio上的LINQtoSQL类,映射您的SQL服务器并向其中添加任何您想要的表 然后,您可以使用它在代码隐藏中创建的对象来更新文本框中的值 这里有一个简单的方法。由于行数的原因,它看起来很复杂:如果LINQ对您来说太陌生,您仍然可以用老式的方
这里有一个简单的方法。由于行数的原因,它看起来很复杂:如果LINQ对您来说太陌生,您仍然可以用老式的方式进行操作:
string statement = "INSERT INTO mytable(mycolumn) VALUES (@text)";
SqlCommand command = new SqlCommand(statement);
command.Parameters.AddWithValue("@text", myTextBox.Text);
try{
SqlConnection connection = new SqlConnection(myConnectionString);
connection.Open();
command.Connection = connection;
command.ExecuteNonQuery();
} catch {
//do exception handling stuff
}
编辑:下面是另一个版本,它使用使用来确保清理混乱:
string statement = "INSERT INTO mytable(mycolumn) VALUES (@text)";
using(SqlCommand command = new SqlCommand(statement))
using(SqlConnection connection = new SqlConnection(myConnectionString)) {
try{
command.Parameters.AddWithValue("@text", myTextBox.Text);
connection.Open();
command.Connection = connection;
command.ExecuteNonQuery();
} catch {
//do exception handling stuff
}
}
但是,在多层或多层应用程序中,您确实需要创建DTO(数据传输对象)来将数据从一层传递到另一层(或从一层传递到另一层)您能给出一些您发现的示例吗?@elninho是否太复杂了?+1几乎完美-使用直接SQL,参数化查询-唯一的抱怨是:您应该使用(SqlConnection=newsqlconnection(…)
块将SqlConnection
和SqlCommand
放入。另外,Parameters.AddWithValue
也可以,但有时可能会很危险-我更喜欢专门定义SqlDbType
,以避免任何意外……所有建议都100%同意。我只是想让这个例子保持简单,这样它就不会压倒OP。在这种情况下,使用东西不应该混淆,最好放弃try catch+1如果你把using语句放进去。@vidstigetry
/catch
比using
更为人熟知。例如,在Java中没有与使用
等效的。无论如何,我举了一个例子,这与java无关,但还行。另一方面,请避免像这样捕获所有异常catch
,因为它可能隐藏程序中的严重问题,因此被认为是不好的做法。而是捕获一个更具体的异常。
public string ConnectionString
{
get
{
//Reading connection string from web.config
return ConfigurationManager.ConnectionStrings["ConnectionName"].ConnectionString;
}
}
public bool InsertEmployee()
{
bool isSaved = false;
int numberOfRowsAffected = 0;
string query = @"INSERT INTO Employee(EmployeeName, EmailAddress)
VALUES (@EmployeeName, @EmailAddress);
SELECT @@IDENTITY AS RowEffected";
SqlCommand cmd = new SqlCommand();
cmd.CommandText = query;
cmd.CommandType = System.Data.CommandType.Text;
cmd.Parameters.Add(new SqlParameter("@EmployeeName", txtEmployeeName.Text));
cmd.Parameters.Add(new SqlParameter("@EmailAddress", txtEmailAddress.Text));
try
{
using (SqlConnection cn = new SqlConnection(ConnectionString))
{
cmd.Connection = cn;
cn.Open();
object result = cmd.ExecuteScalar();
isSaved = Convert.ToInt32(result) > 0 ? true : false;
}
}
catch (Exception ex)
{
isSaved = false;
}
return isSaved;
}