从sql数据库(从不同的表)获取2个或更多不同的信息

pkwftd7m  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(334)

我试着用一个sql连接从不同的表中获取不同的信息。实际代码为:

sql_Verbindung.MssqlCommand.CommandText = "SELECT USER, PWD FROM " + server + ".[dbo].[table1] where USER = '12345'";
            sql_Verbindung.OpenConnection();
            sql_Verbindung.MssqlReader = sql_Verbindung.MssqlCommand.ExecuteReader();
            if (sql_Verbindung.MssqlReader.HasRows)
            {
                while (sql_Verbindung.MssqlReader.Read())
                {
                    object.Name = sql_Verbindung.MssqlReader["USER"].ToString().Trim();
                    object.Passwort = sql_Verbindung.MssqlReader["PWD"].ToString().Trim();
                }
            }
            sql_Verbindung.CloseConnection();

            sql_Verbindung.MssqlCommand.CommandText = "SELECT * FROM " + server + ".[dbo].[table2]";
            sql_Verbindung.OpenConnection();
            sql_Verbindung.MssqlReader = sql_Verbindung.MssqlCommand.ExecuteReader();
            while (sql_Verbindung.MssqlReader.Read())
            {
                if (sql_Verbindung.MssqlReader["Live"].ToString() == "1")
                {
                    object.database_available = true;
                }
                else
                {
                    object.database_available = false;
                }
            }
            sql_Verbindung.CloseConnection();

这很管用,但我想会更好(sql.open和sql.close显然是打开和关闭连接的。)我如何在不关闭连接的情况下获取这两个信息?如果我尝试在不关闭连接的情况下使用相同的代码,它会崩溃。提前谢谢!

a7qyws3x

a7qyws3x1#

如果您的要求是从同一个数据库中获取两个表的结果集,那么为什么不使用union呢。

SELECT USER, PWD, NULL AS LIVE FROM " + server + ".[dbo].[table1] where USER = '12345'
UNION ALL
SELECT NULL AS USER, NULL AS PWD, Live  FROM " + server + ".[dbo].[table2]

改善区域。
如果可能的话,使用存储过程来避免sql注入。
如果您仍然想使用内联查询,那么可以尝试使用上面提到的查询,而不是多次往返于数据库。

相关问题