ASP.Net注册页-如何从其他表获取外键
我正在使用Visual Studio 2013创建一个ASP.net网站。具体来说,我正在尝试注册一个客户,同时将数据插入客户表中。当我注册一个客户时,我还想获取该客户的用户id(该id插入到数据库中的用户帐户表中)。因此,本质上我需要获取用户id,但也需要确保这是当前用户的用户id 以下是我试图做的:ASP.Net注册页-如何从其他表获取外键,asp.net,visual-studio-2013,Asp.net,Visual Studio 2013,我正在使用Visual Studio 2013创建一个ASP.net网站。具体来说,我正在尝试注册一个客户,同时将数据插入客户表中。当我注册一个客户时,我还想获取该客户的用户id(该id插入到数据库中的用户帐户表中)。因此,本质上我需要获取用户id,但也需要确保这是当前用户的用户id 以下是我试图做的: String userQueryStr = "SELECT UserAccountID FROM UserAccounts WHERE Username = " + Email.Text; Sy
String userQueryStr = "SELECT UserAccountID FROM UserAccounts WHERE Username = " + Email.Text;
System.Data.SqlClient.SqlCommand selectCommand = new System.Data.SqlClient.SqlCommand(userQueryStr, conn);
int userID = Convert.ToInt32(selectCommand.ExecuteScalar());
顺便说一句,Email是用户名。本质上,我试图确保UserAccounts中的username字段与注册页面文本框中键入的内容匹配。
然后我尝试存储一个insert语句,并传递USERIDINT变量,该变量存储用户帐户表中的当前用户id。
我的问题是,当我点击注册按钮运行应用程序后,当我键入用户名时会出现此错误test@testers.com:
System.Data.dll中发生“System.Data.SqlClient.SqlException”类型的异常,但未在用户代码中处理
附加信息:多部件标识符“test@testers.com“无法约束。在此行引发异常:
int userID = Convert.ToInt32(selectCommand.ExecuteScalar());
Sql认为您的电子邮件是一个字段,因为您没有前后的引号
String userQueryStr = "SELECT UserAccountID FROM UserAccounts WHERE Username = '" + Email.Text+"'";
现在我又犯了一个错误。它表示:System.Data.dll中发生了“System.InvalidOperationException”类型的异常,但未在用户代码中处理其他信息:已存在与此命令关联的打开的DataReader,必须先关闭该命令。此行出现错误:cmd1.ExecuteReader();我在相同的方法中使用了2个SQLCommands。这就是问题所在吗?如果您需要,这是我为客户提供的insert语句:querystr1=“插入客户(FirstName、LastName、StreetAddress1、Phone、City、State、UserID)”+”值(“+FirstName.Text+”、“+LastName.Text+”、“+StreetAddress.Text+”、“+Phone.Text+”、“+City.Text+”“',“+State.Text+”,“+userID+”)”,实际上我已经解决了。我所要做的就是在第一条insert语句之后关闭连接,然后在第二条insert语句之前重新打开它。谢谢您的帮助。