转换会话值的问题,其中控件在sql server db
本文关键字:控件 sql server db 会话 问题 转换 | 更新日期: 2023-09-27 17:49:34
这是我的问题,在我登录我填写2个会话,1与公司名称和1与用户名。使用这2个会话,我想在数据库中找到相应的ID。但是你可以猜到会话和id的数据类型是不一样的,所以我假设需要一些转换。所以基本上我要做的是保存id对应的文本在会话到一个表。
这是我到目前为止使用的代码,但是当我试图保存订单时,会出现错误。
System.Data.SqlClient.SqlCommand myCommand1 = new System.Data.SqlClient.SqlCommand("SELECT tUserId FROM tblUsers WHERE tUserName=@Username", sqlConn);
myCommand1.Parameters.AddWithValue("@Username", (string)Session["username"]);
myCommand1.ExecuteNonQuery();
int user = Convert.ToInt32(myCommand1.ToString());
System.Data.SqlClient.SqlCommand myCommand2 = new System.Data.SqlClient.SqlCommand("SELECT tCompId FROM tblCompany WHERE tCompName=@company", sqlConn);
myCommand2.Parameters.AddWithValue("@company", (string)Session["compNameLogin"]);
myCommand2.ExecuteNonQuery();
int comp = Convert.ToInt32(myCommand2.ToString());
System.Data.SqlClient.SqlCommand myCommand3 = new System.Data.SqlClient.SqlCommand("INSERT INTO tblOrder(tBestCompId, tBestUserId ) VALUES('" + comp + "','" + user + "') ", sqlConn);
myCommand3.ExecuteNonQuery();
系统。FormatException:输入字符串格式不正确。在System.Number。stringtonnumber(字符串str, NumberStyles选项,NumberBuffer&在System.Number. number, NumberFormatInfo info, Boolean parseDecimal)。ParseInt32(字符串s, NumberStyles的样式,NumberFormatInfo的信息)在System.Convert。ToInt32(String value)
这是我遇到的错误。
如果有人可以我得到在正确的方向或给我提示我做错了什么,或其他方式做到这一点。请把你的建议贴出来。
提前感谢。
您要做的是从DB检索单个数据。使用ExecuteScalar
:
System.Data.SqlClient.SqlCommand myCommand1 =
new System.Data.SqlClient.SqlCommand(
"SELECT tUserId FROM tblUsers WHERE tUserName=@Username", sqlConn);
myCommand1.Parameters.AddWithValue("@Username", (string)Session["username"]);
int user = (int)myCommand1.ExecuteScalar();
ExecuteNonQuery
将返回受影响的行数。转换myCommand2.ToString()
到int
是绝对不会工作的myCommand2
不存储你的结果(我们不知道应用ToString()
的结果是什么,这通常是一个对象的简要描述)
解决方案2:
你可以用以下代码替换你的代码,只需要一个请求:
string insertQuery =
@"INSERT INTO tblOrder(tBestCompId, tBestUserId )
SELECT U.tUserId, T.tblCompany
FROM (SELECT tUserId FROM tblUsers WHERE tUserName=@Username) U,
(SELECT tCompId FROM tblCompany WHERE tCompName=@company) T";
System.Data.SqlClient.SqlCommand myCommand
= new System.Data.SqlClient.SqlCommand(insertQuery, sqlConn);
myCommand.Parameters.AddWithValue("@Username", (string)Session["username"]);
myCommand.Parameters.AddWithValue("@company", (string)Session["compNameLogin"]);
int affectedRows = myCommand1.ExecuteNonQuery();
// affectedRows will contain the number of inserted rows (which is 1)