Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将文本框值插入数据库表_C#_Asp.net_Sql_Sql Server - Fatal编程技术网

C# 将文本框值插入数据库表

C# 将文本框值插入数据库表,c#,asp.net,sql,sql-server,C#,Asp.net,Sql,Sql Server,向SQL Server表中插入文本框值的最简单和最类似SQL的方法是什么?我找到了几种方法,但对于我想做的这件简单的事情来说,它们都太复杂了。如果您想快速完成某件事情,请使用LINQ to SQL。它将负责您的数据访问层和业务对象 只需转到VisualStudio上的LINQtoSQL类,映射您的SQL服务器并向其中添加任何您想要的表 然后,您可以使用它在代码隐藏中创建的对象来更新文本框中的值 这里有一个简单的方法。由于行数的原因,它看起来很复杂:如果LINQ对您来说太陌生,您仍然可以用老式的方

向SQL Server表中插入文本框值的最简单和最类似SQL的方法是什么?我找到了几种方法,但对于我想做的这件简单的事情来说,它们都太复杂了。

如果您想快速完成某件事情,请使用LINQ to SQL。它将负责您的数据访问层和业务对象

只需转到VisualStudio上的LINQtoSQL类,映射您的SQL服务器并向其中添加任何您想要的表

然后,您可以使用它在代码隐藏中创建的对象来更新文本框中的值


这里有一个简单的方法。由于行数的原因,它看起来很复杂:

如果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语句放进去。@vidstige
try
/
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;
}