如何在 Web 服务的变量中存储选择查询的值
本文关键字:存储 选择 查询 变量 Web 服务 | 更新日期: 2023-09-27 18:35:57
我是Web服务开发的新手。我在 asp.net 中使用 c# 和 mysql 制作了 Web 服务。
我想将选择查询的值存储在变量中,然后我想插入到表中。
我使用了以下代码:
//for inserting new game details in the tbl_Game by FB
[WebMethod]
public string InsertNewGameDetailsForFB(string gametype, string player1, string player2, string player3, string player4, string player5)
{
string success = "Error in Insertion";
string selectID = "Select UserID from tbl_userinfo where Facebook_ID IN ('" + player1 + "','" + player2 + "','" + player3 + "')";
con = new MySqlConnection(conString);
con.Open();
MySqlCommand cmd = new MySqlCommand(selectID, con);
MySqlDataReader ids = cmd.ExecuteReader();
string id1="", id2="", id3="";
while (ids.Read())
{
id1 = ids.GetString(0);
id2 = ids.GetString(1);
id3 = ids.GetString(2);
}
string insertNewGame = "Insert into tbl_game(Type,Player1,Player2,Player3,Player4,Player5) values";
insertNewGame += "( '" + gametype + "' , '" + id1 + "', '" + id2 + "','" + id3 + "', '" + player3 + "','" + player4 + "', '" + player5 + "' )";
con = new MySqlConnection(conString);
con.Open();
MySqlCommand cmd1 = new MySqlCommand(insertNewGame, con);
int success1 = cmd1.ExecuteNonQuery();
con.Close();
string gameID = "Select MAX(GameID) from tbl_game";
con = new MySqlConnection(conString);
con.Open();
MySqlCommand cmd2 = new MySqlCommand(gameID, con);
string gameid = cmd2.ExecuteScalar().ToString();
if (success1 > 0)
{
success="Inserted Successfully, GameID is - " + gameid;
}
return success;
}
我该怎么做?
谢谢。
您的第一个问题是您如何尝试从第一个查询中读取 UserID。 此查询不会返回三列,而是返回三行。 所以你需要做这样的事情:
int index = 0;
while (ids.Read())
{
switch (index)
{
case 0:
id1 = ids.GetString(0);
break;
case 1:
id2 = ids.GetString(0);
break;
case 2:
id3 = ids.GetString(0);
break;
}
index += 1;
}
这应该正确存储它们。 我的第二个建议是,由于这是一个Web服务,你应该避免SQL注入攻击,并使用参数化查询而不是动态SQL。 网络上有很多例子可以使用。
我的最后一个建议是将 using 语句用于实现 IDisposable 的对象(即连接对象、命令、读取器等)。 这可确保正确清理对象。