1

我正在为我的项目使用 asp.net,并且我正在使用以下代码,但它无法正常工作

 SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=E:\\WEB_PROJECT\\App_Data\\ASPNETDB.MDF;Integrated Security=True;User Instance=True");
 SqlCommand cmd = new SqlCommand();
 cmd.Connection = con;
 con.Open();
 cmd.CommandText = "UPDATE info SET fname = @fn, lname = @fl, phone= @ph, recoveryq=@rq, recoverya=@ra WHERE username = @un";  

 cmd.Parameters.AddWithValue("fn", TextBox3.Text);
 cmd.Parameters.AddWithValue("fl", TextBox4.Text);
 cmd.Parameters.AddWithValue("ph", TextBox5.Text);
 cmd.Parameters.AddWithValue("rq",TextBox6.Text);
 cmd.Parameters.AddWithValue("ra",TextBox2.Text);
 cmd.Parameters.AddWithValue("un",line);        
 cmd.ExecuteNonQuery();
 con.Close();

建议plzz我很困惑!:(

4

2 回答 2

3

正如我之前在这个网站上所说的那样——整个User Instance 和 AttachDbFileName=方法是有缺陷的——充其量是!Visual Studio 将在.mdf文件周围进行复制,并且很可能,您的UPDATE工作正常 - 但您最终只是查看了错误的.mdf文件

如果您想坚持使用这种方法,请尝试在con.Close()调用上设置断点 - 然后.mdf使用 SQL Server Mgmt Studio Express 检查文件 - 我几乎可以肯定您的数据在那里。

我认为真正的解决方案是

  1. 安装 SQL Server Express(反正你已经完成了)

  2. 安装 SQL Server Management Studio Express

  3. 在SSMS Express中创建您的数据库,给它一个逻辑名称(例如ASPNETDB

  4. 使用它的逻辑数据库名称(在服务器上创建它时给出)连接到它——不要乱用物理数据库文件和用户实例。在这种情况下,您的连接字符串将类似于:

    Data Source=.\\SQLEXPRESS;Database=ASPNETDB;Integrated Security=True
    

    其他一切都和以前完全一样......

于 2012-06-20T12:18:06.537 回答
2

cmd.Parameters.AddWithValue("@fn", TextBox3.Text);

您必须指定参数名称以及 '@' 。

于 2012-06-20T09:57:18.473 回答