我正在尝试学习如何获取控制值并将它们插入到db表中。例如,我有一个名为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 - 查找服务器/实例时出错 指定)
我用Google搜索了错误消息,我正在阅读的很多内容都说我的连接可能是错误的。我试过通过使用一些拖放控件测试这个,我有一个转发器使用相同的连接字符串。
现在我甚至不知道这是否正确。我相信你们都可以在某个方面联系起来,我希望看到它在一个非常简单的层面上工作,所以我可以开始玩它,看看它是如何真正起作用的。
答案 0 :(得分:4)
您的连接字符串推断您正在使用SQL Server Compact Edition - 在这种情况下,您希望使用SQLCeCommand
和SQLCeConnection
。还请考虑使用参数化查询而不是将字符串连接在一起 - 出于性能和安全性原因,它更好。请阅读this link以获取有关SQL注入的更多背景知识 - 此时您很容易受到攻击。
答案 1 :(得分:2)
您必须使用SqlCeConnection
才能创建连接
link:http://msdn.microsoft.com/fr-fr/library/system.data.sqlserverce.sqlceconnection%28v=vs.80%29.aspx
答案 2 :(得分: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();
答案 3 :(得分:0)
建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:26 - 查找指定的服务器/实例时出错)
对于上面的错误,您可以通过转到服务窗口重启您的sqlserver实例,如下所示
按windows + r
输入services.msc + enter
找到你的sqlserver实例并重新启动它