#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(); ..... } } } }
Комментариев нет:
Отправить комментарий