Asp.net 为什么insert语句生成2行?
我不知道为什么,但当我在我的项目中执行insert语句时,它会生成两个缩进行,而不是只生成一行 为什么呢 这是我的代码:Asp.net 为什么insert语句生成2行?,asp.net,sql-server,Asp.net,Sql Server,我不知道为什么,但当我在我的项目中执行insert语句时,它会生成两个缩进行,而不是只生成一行 为什么呢 这是我的代码: if (ListBox.Items.Count != 0) { string username = Session["Session"].ToString(); con = new SqlConnection("Data Source=MICROSOF-58B8A5\\SQL_SERVER_R2;Initial
if (ListBox.Items.Count != 0)
{
string username = Session["Session"].ToString();
con = new SqlConnection("Data Source=MICROSOF-58B8A5\\SQL_SERVER_R2;Initial Catalog=Daniel;Integrated Security=True");
con.Open();
string knowWhichOne = "SELECT ID FROM Users WHERE Username='" + UserOrGuest.Text + "'";
SqlCommand comm = new SqlCommand(knowWhichOne, con);
int userID = (Int32)comm.ExecuteScalar();
knowWhichOne = "SELECT ClassID FROM Users WHERE Username='" + UserOrGuest.Text + "'";
comm = new SqlCommand(knowWhichOne, con);
int classID = (Int32)comm.ExecuteScalar();
knowWhichOne = "SELECT SchoolID FROM Users WHERE Username='"+UserOrGuest.Text + "'";
comm = new SqlCommand(knowWhichOne, con);
int schoolID = (Int32)comm.ExecuteScalar();
if (RadioWords.Checked == true)
{
game = 1;
}
else
{
game = 2;
}
string arr = "";
for (int i = 0; i < ListBox.Items.Count; i++)
{
arr += ListBox.Items[i] +",";
}
string sqlqueryString = "INSERT INTO HistoryOfGames (GameID, UserID, LengthOfArray, NumberOfErrors, ClassID, SchoolID,Arrayarray) VALUES (@GameID, @UserID, @LengthOfArray, @NumberOfErrors, @ClassID, @SchoolID, @Arrayarray);" + "SELECT SCOPE_IDENTITY()";
SqlCommand commandquery = new SqlCommand(sqlqueryString, con);
commandquery.Parameters.AddWithValue("GameID", game);
commandquery.Parameters.AddWithValue("UserID", userID);
commandquery.Parameters.AddWithValue("LengthOfArray", HowMany.Text);
commandquery.Parameters.AddWithValue("NumberOfErrors", 0);
commandquery.Parameters.AddWithValue("ClassID", classID);
commandquery.Parameters.AddWithValue("SchoolID", schoolID);
commandquery.Parameters.AddWithValue("Arrayarray", arr);
commandquery.ExecuteNonQuery();
int IdOfRecentHistoryGame = (int)(decimal)commandquery.ExecuteScalar();
con.Close();
Response.Redirect("NowPlay.aspx?ID="+ IdOfRecentHistoryGame);
}
if(ListBox.Items.Count!=0)
{
字符串username=Session[“Session”].ToString();
con=newsqlconnection(“数据源=MICROSOF-58B8A5\\SQL\u SERVER\u R2;初始目录=Daniel;集成安全=True”);
con.Open();
string knowWhichOne=“从Username=”+UserOrGuest.Text+“”的用户中选择ID;
SqlCommand comm=新的SqlCommand(knowWhichOne,con);
int userID=(Int32)comm.ExecuteScalar();
knowWhichOne=“从Username=”+UserOrGuest.Text+“”的用户中选择ClassID;
comm=新的SqlCommand(knowWhichOne,con);
int classID=(Int32)comm.ExecuteScalar();
knowWhichOne=“从用户名=”+UserOrGuest.Text+“”的用户中选择学校ID;
comm=新的SqlCommand(knowWhichOne,con);
int schoolID=(Int32)comm.ExecuteScalar();
if(RadioWords.Checked==true)
{
游戏=1;
}
其他的
{
游戏=2;
}
字符串arr=“”;
对于(int i=0;i
我要检查两件事:
- 查看此语句的执行次数(尝试设置断点以验证代码仅运行一次)
- 查看数据库中是否存在可能导致插入额外记录的触发器
- 查看此语句的执行次数(尝试设置断点以验证代码仅运行一次)
- 查看数据库中是否存在可能导致插入额外记录的触发器
- 我要检查两件事:
commandquery.ExecuteNonQuery();
然后马上
int IdOfRecentHistoryGame = (int)(decimal)commandquery.ExecuteScalar();
你确实执行了两次
还有,不要忘记检查代码中的sql注入…确实如此
commandquery.ExecuteNonQuery();
然后马上
int IdOfRecentHistoryGame = (int)(decimal)commandquery.ExecuteScalar();
你确实执行了两次
还有,别忘了检查代码中是否有sql注入…我也有同样的问题,我是这样处理的。虽然不专业,但它可以工作:
Dim x As Boolean=True
如果x=True,则
这里是要插入数据库的代码。
End If
x=False
我也有同样的问题,我是这样处理的。虽然不专业,但它可以工作:
Dim x As Boolean=True
如果x=True,则
这里是要插入数据库的代码。
End If
当我调试它时,它只运行一次。什么样的触发因素可能导致这种情况?然而,斯图发现了真正的原因。当我调试它时,它只运行一次。什么样的触发因素可能导致这种情况?然而,斯图发现了真正的原因。无需检查任何其他内容。您是否可以通过一次查询和访问数据库来获取“从用户处选择ID、ClassID、SchoolID…”?您是否可以通过一次查询和访问数据库来获取“从用户处选择ID、ClassID、SchoolID…”?很抱歉,这在很多方面都是错误的。。。1) 除非您是多线程的,否则X仍然是真的2)如果X=真?真正地如果X呢?3)这是如何解决实际问题的?对不起,这在很多方面都是错误的。。。1) 除非您是多线程的,否则X仍然是真的2)如果X=真?真正地如果X呢?3)这如何解决实际问题?