转换会话值的问题,其中控件在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)

这是我遇到的错误。

如果有人可以我得到在正确的方向或给我提示我做错了什么,或其他方式做到这一点。请把你的建议贴出来。

提前感谢。

转换会话值的问题,其中控件在sql server db

您要做的是从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)