0

我正在尝试学习如何获取控制值并将它们插入到数据库表中。例如,我有一个名为NameBox. 我想从该文本框中获取文本并将其添加到数据库表中。

我并不是想以最好的方式做到这一点,而是用最简单的方式来做,这样我就可以绕开这个概念。到目前为止,我有:

<asp:TextBox ID="NameBox" runat="server"></asp:TextBox>
<asp:TextBox ID="EmailBox" runat="server"></asp:TextBox>

这是代码隐藏。

protected void Button1_Click(object sender, EventArgs e)
{
    string name1 = NameBox.Text;
    string email1 = EmailBox.Text;

    System.Data.SqlClient.SqlConnection sqlConnection1 =
   new System.Data.SqlClient.SqlConnection(@"Data Source=E:\*********.com1.5\**********.com\App_Data\Home.sdf;");

    System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
    cmd.CommandType = System.Data.CommandType.Text;
    cmd.CommandText = "INSERT INTO CustomerList (Name, Email) VALUES (" + name1 + "," + email1 + ")";
    cmd.Connection = sqlConnection1;

    sqlConnection1.Open();
    cmd.ExecuteNonQuery();
    sqlConnection1.Close();
}

我收到的错误消息是

建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)

我用谷歌搜索了错误消息,我读到的很多内容都说我的连接可能是错误的。我尝试使用一些拖放控件对此进行测试,并且我有一个使用相同连接字符串的中继器。

现在我什至不知道这是否是正确的方法。我相信你们都可以在某一点或另一个点上建立联系,我希望看到它在一个非常简单的层面上工作,这样我就可以开始使用它,看看它是如何真正工作的。

4

4 回答 4

4

您的连接字符串推断您正在使用 SQL Server Compact Edition - 在这种情况下您希望使用SQLCeCommandandSQLCeConnection代替。还请考虑使用参数化查询而不是将字符串连接在一起 - 出于性能和安全原因,这样做会更好。请阅读此链接以获取有关 SQL 注入的更多背景信息 - 目前您很容易受到它的影响。

于 2012-08-31T15:35:15.350 回答
2

您必须使用SqlCeConnection才能创建连接

链接:http: //msdn.microsoft.com/fr-fr/library/system.data.sqlserverce.sqlceconnection%28v=vs.80%29.aspx

于 2012-08-31T15:34:01.723 回答
0

只需复制粘贴您用于中继器代码的连接字符串,并将其粘贴到 Button1_Click 代码中,您将在其中创建新连接。可能有多余的空格,或者一些大写字母不匹配。对于插入,我会在数据库中创建一个存储过程,它接受 Name 和 Email 参数,并使用 SqlCommand 来执行存储过程。

CREATE PROCEDURE INSERT_NAME_EMAIL_DATA
    @NAME VARCHAR(100) NULL,
    @EMAIL VARCHAR(100) NULL
AS
BEGIN
      INSERT INTO CustomerList (Name, Email) VALUES (@NAME, @EMAIL)
END  

在您的代码中,您可以通过执行以下操作来执行存储过程:

cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.Add(
    new SqlParameter("@NAME", name1));
cmd.Parameters.Add(
    new SqlParameter("@EMAIL", email1));
cmd.Connection = sqlConnection1;

        sqlConnection1.Open();
        cmd.ExecuteNonQuery();
        sqlConnection1.Close();
于 2012-08-31T15:42:53.197 回答
0

建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)

对于上述错误,您已经通过转到服务窗口重新启动您的 sqlserver 实例,如下所示

按 windows + r

输入 services.msc + 输入

找到您的 sqlserver 实例并重新启动它

于 2014-12-31T11:46:56.210 回答