Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在webservice的变量中存储select查询的值?_C#_Asp.net_Mysql_Web Services - Fatal编程技术网

C# 如何在webservice的变量中存储select查询的值?

C# 如何在webservice的变量中存储select查询的值?,c#,asp.net,mysql,web-services,C#,Asp.net,Mysql,Web Services,我不熟悉Web服务开发。我使用c和mysql在asp.net中创建了webservice 我想将select查询的值存储在变量中,然后将该变量插入表中 我使用了以下代码: //for inserting new game details in the tbl_Game by FB [WebMethod] public string InsertNewGameDetailsForFB(string gametype, string player1, string player2,

我不熟悉Web服务开发。我使用c和mysql在asp.net中创建了webservice

我想将select查询的值存储在变量中,然后将该变量插入表中

我使用了以下代码:

//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。网上有很多你可以使用的例子

我的最后一个建议是对实现IDisposable的对象(即连接对象、命令、读取器等)严格使用using语句。。。。这样可以确保正确清理对象