2015-06-21 98 views
0

我正在创建一个使用Visual Studio 2013的ASP.net网站。具体来说,我试图注册一个客户并将数据插入到客户表中时间。当我注册一个客户时,我也想获取该客户的用户标识(插入到我的用户帐户表中的数据库中)。所以基本上我需要获得用户标识,但也需要确保这是当前用户的用户标识。ASP.Net注册页面 - 如何从其他表中获取外键

这里就是我试图做的:

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());  

电子邮件是用户名BTW。基本上,我试图确保UserAccounts中的用户名字段与注册页上文本框中输入的内容相匹配。 然后我尝试存储一个插入语句,并传递用户ID变量,它存储用户账户表中的当前用户ID。 我的问题是,当我点击注册按钮后运行应用程序时,当我输入用户名[email protected]时出现此错误:

发生了类型'System.Data.SqlClient.SqlException'的异常System.Data.dll,但未在用户代码中处理 附加信息:无法绑定多部分标识符“[email protected]”。该异常被抛出这一行:

int userID = Convert.ToInt32(selectCommand.ExecuteScalar()); 

回答

0

的Sql认为电子邮件是一个字段,因为你没有之前和

String userQueryStr = "SELECT UserAccountID FROM UserAccounts WHERE Username =  '" + Email.Text+"'"; 
+0

现在我得到另一个错误后的报价。它说:在System.Data.dll中发生类型'System.InvalidOperationException'的异常,但未在用户代码中处理 附加信息:已经有一个与此命令关联的打开的DataReader,必须先关闭该命令。错误发生在这一行:cmd1.ExecuteReader();我在同一个方法中使用2个SQLCommands。这是问题吗? – user2958278

+0

此外,如果您需要它,这里是我的客户插入语句:querystr1 =“INSERT INTO客户(名字,姓氏,StreetAddress1,电话,城市,州,用户ID)”+ “VALUES('”+ FirstName.Text + '',''+ LastName.Text +'','“+ StreetAddress.Text +”','“+ Phone.Text +”','“+ City.Text +”','“+ State.Text + “','”+ userID +“')”; – user2958278

+0

其实我想通了。我所要做的只是在第一条插入语句之后关闭连接,并在第二条插入语句之前重新打开连接。谢谢您的帮助。 – user2958278