#c_sharp #sql_server
Господа, прошу объяснить не мыслимое
Есть простой запрос, который у меня работает, и в C# и в МС студии
//c#
string slim_sqlquery = "SELECT * FROM sys.Tables";
//Ms SQL Server Management Studio
SELECT * FROM sys.Tables
Но на некоторых серверах таблички не находятся, в студии делаю по другому
//Ms SQL Server Management Studio
Use MyServerName
GO
SELECT * FROM sys.Tables
А как это же самое реализовать на c# ?
//p.s.
string slim_sqlquery = "Use MyServerName GO SELECT * FROM sys.Tables";
SqlCommand cmd = new SqlCommand(slim_sqlquery, conn_my_servak);
SqlDataReader reader = cmd.ExecuteReader();//вот тут лезут ошибки, что SQL запрос
надо в 1 строку
Ответы
Ответ 1
SqlClient не понимает GO так, как это делает SSMS. Либо используйте three-part naming: SqlCommand cmd = new SqlCommand("SELECT * FROM MyServerName.sys.Tables", conn_my_servak); SqlDataReader reader = cmd.ExecuteReader(); Либо вынесите смену контекста в отдельную команду: conn_my_servak.ChangeDatabase("MyServerName"); SqlCommand cmd = new SqlCommand("SELECT * FROM sys.Tables", conn_my_servak); SqlDataReader reader = cmd.ExecuteReader();Ответ 2
В Запросе Use MyServerName GO убери. using (var connection = new SqlConnection(conn_my_servak)) { connection.Open(); using (var command = connection.CreateCommand()) { command.CommandText("SELECT * FROM sys.Tables") using (var reader = command.ExecuteReader()) { while(reader.Read()) { SomeId = (int)reader["id"]; SomeString = reader["someStr"].ToString(); ..... } } } }
Комментариев нет:
Отправить комментарий