1. Спонсор публикаций Marketplace codeby. Сервис, который так долго ждали. При расчетах используем биткоин. Первый товар уже в продаже: Консультация на тему ИБ от Ondrik8

    Скрыть объявление

C#+sql=Сеть

Тема в разделе ".NET", создана пользователем netuser, 13 июл 2007.

  1. netuser

    netuser Well-Known Member

    Регистрация:
    30 июн 2007
    Сообщения:
    53
    Симпатии:
    0
    У меня прога. работает с базой sql. При локальной работе нет проблем все в порядке. Но что нужно сделать чтобы работала и через сеть.
    Попробовал несколько вариантов, установил на один комп sql server и попытался с другого компа запустив компьютер поработать, не получилось. Что нужно сделать чтобы получилось.
     
  2. NikSoft

    NikSoft Гость

  3. netuser

    netuser Well-Known Member

    Регистрация:
    30 июн 2007
    Сообщения:
    53
    Симпатии:
    0
    Это пример из MSDN2005
    "myConnectionString = "Initial Catalog=Northwind;Data Source=localhost;Integrated Security=SSPI;"
    Я же в место localhost пишу имя компьютера на котором установлен sql server, например попробовал hs, \\hs, и \\"ip adress"
    не помогло.
     
  4. NikSoft

    NikSoft Гость

    Для: netuser
    укажи ip address
     
  5. Pasha

    Pasha Гость

    Для: netuser
    На sql server-е должен быть включен протол named pipes или tcp. И у пользователя, под которым запущено приложение, должны быть соответствующие права (из-за использования Integrated Security=SSPI).
     
  6. netuser

    netuser Well-Known Member

    Регистрация:
    30 июн 2007
    Сообщения:
    53
    Симпатии:
    0
    "named pipes" и "tcp/ip" есть. и пользователь "sa"
    но не получается
     
  7. Pasha

    Pasha Гость

    Для: netuser
    Integrated Security=SSPI - это windows authentication. Используется учетная запись, под которой запущено приложение, а не пользователь sa. И логин для нее должен быть заранее добавлен в sql server (по умолчанию добавлены только администраторы).
    Для использования sa надо прописать в строке соединения "...Integrated Security=false;uid=sa;pwd=password;..."
     
  8. sdriver

    sdriver Гость

    Попробуй после ip -- указать имя сервиса. Еx: 192.168.1.10\SQLEXPRESS
     
  9. netuser

    netuser Well-Known Member

    Регистрация:
    30 июн 2007
    Сообщения:
    53
    Симпатии:
    0
    Прога заработала. Все оказалось просто.
    Строка соеднения:
    workstation id=(local)WNetSDK;packet size=4096;user id=sa;data source="имя машины где сервер стоит";persist security info=false;initial catalog=Data_Base;password=пароль;

    (local)WNetSDK - авто определение имя компа где запущена прога
     
  10. AndreyAGU

    AndreyAGU Гость

    Стоп изивни за глупый вопрос но можно узнать полный код и на каком языке эти пишеться ну то есть я имею ввиду что если писать на с# то я должне написать
    string stroka = " парметры"
    Sqlconnection aaa= new SqlConnection(stroka);
    aaa.open()


    aaa.Close()


    или надо не так пписать?
     
  11. netuser

    netuser Well-Known Member

    Регистрация:
    30 июн 2007
    Сообщения:
    53
    Симпатии:
    0
    Вот полный код:
    myConStr="workstation id=(local)WNetSDK; packet size=4096; user id="+MainWindow.UserName+";data source="+MainWindow.dataServer+";persist security info=false;initial catalog=Data_Base;password="+ MainWindow.password;
    InsertComannd="INSERT INTO Real_Client(Client_Type, Register_Date, Client_Code, Card_number, Company_Name, Property_Type, Client_Name, Occupation, Contacts, E_Mail, P_Client_Type, Segment, Need_Bye_Change, Car_Type, Inform_Source, Add_Inform)"+
    "values (" + "'" +b+ "'," + "'" +c+ "'," + "'"+d+ "'," + "'"+s+"'," + "'"+f+"',"+"'"+g+"',"+"'"+h+"',"+"'"+q+"',"+"'"+w+"',"+"'"+r+"',"+"'"+t+"',"+"'"+y+"',"+"'"+u+"',"+"'"+i+"',"+"'"+o+"',"+"'"+p+"'"+")";
    SqlConnection myConnect=new SqlConnection(myConStr);
    SqlCommand myCommand=new SqlCommand(InsertComannd);

    try
    {
    myConnect.Open();
    myCommand.Connection=myConnect;
    myCommand.ExecuteNonQuery();
    myCommand.Connection.Close();
    MessageBox.Show("Данные добавлены", "Успешно", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

    }
    catch (SqlException)
    {
    MessageBox.Show("Ошибка при вводе данных", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    myCommand.Connection.Close();
    }
    myConnect.Close();
     
  12. mms

    mms Гость

    :D
     
  13. netuser

    netuser Well-Known Member

    Регистрация:
    30 июн 2007
    Сообщения:
    53
    Симпатии:
    0
    Вот интересно что не понравилось?
     
  14. mms

    mms Гость

    Лично мне не понравилось создание команды, обработка исключительных ситуаций и закрые соединения.

    Да, и еще имена переменных : a, b, c, d, ... :)
     
  15. netuser

    netuser Well-Known Member

    Регистрация:
    30 июн 2007
    Сообщения:
    53
    Симпатии:
    0
    Переменные да, но это лищь черновой вариант. Как минимум, что такое красивое и понятное оформление- это знают многие.

    Вот что такое "обработка исключительных ситуаций" я не совсем понял.

    Что касается создания команды, делал так как мне было удобно исходя из самой программы. Знаете универсальный вариант подходящий везде и всегда дайте и мен не него поглазеть.

    А закрываю всегда так. Проблемы еще не возникали.
     
  16. mms

    mms Гость

    Ну я бы написал так:

    Код (Text):
    SqlConnection myConnect=new SqlConnection(myConStr);
    SqlCommand myCommand=new SqlCommand(InsertComannd, myConnect);

    try
    {
    myConnect.Open();
    myCommand.ExecuteNonQuery();
    MessageBox.Show("Данные добавлены", "Успешно", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
    }
    catch (SqlException)
    {
    MessageBox.Show("Ошибка при вводе данных", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    finally
    {
    myConnect.Close();
    }
    А если не Sql ошибка, а какая-нибудь системная? (В жизни всякое случается :) ).

    В SqlCommand есть отличный проперти - Parameters. А писать код качественно надо заставлять себя всегда, в том числе и черновой вариант, чтобы это было на уровне инстинкта. Тоже самое и с коментариями к коду. Особенно порочная практика писания грязного кода у людей с гос контор (вроде и человек работает долго, а по прежнему button1, button2, grid1, a, b, c, d, непонятные цифры фиг пойми что означающие ... и т.д.), на комерческих как-то заставляют писать нормально.

    Далее - "Ошибка при вводе данных" - это должно проверяться еще до того, как вызвана команда. Да и сообщение совсем не информативно. Параметров передали 20 штук, а что неправильно, фиг знает :)
     
  17. netuser

    netuser Well-Known Member

    Регистрация:
    30 июн 2007
    Сообщения:
    53
    Симпатии:
    0
     
  18. netuser

    netuser Well-Known Member

    Регистрация:
    30 июн 2007
    Сообщения:
    53
    Симпатии:
    0
    Значит кровь не достаточно горячая.
     
  19. mms

    mms Гость

    Это значит, что либо поменять сообщение, либо это верное сообщение и корректность ввода данных проверяется выполнением команды, что не есть хорошо.

    Пример, юзер ввел в поле "asdf", где ожидалось целое, я так понял, что дело дойдет до вызова SqlCommand и после этого юзер уже узнает, что где-то, что-то он ввёл не правильно.
     
  20. netuser

    netuser Well-Known Member

    Регистрация:
    30 июн 2007
    Сообщения:
    53
    Симпатии:
    0
    Прога и база маленькие, и полей для ввода мало, вот я и сделал так чтобы такие вещи проверяла сама пога (в отдельной функции), точнее это все (проверку) я скопировал со старой программы которую год назад писал (тогда еще с базой не работал).
     

Поделиться этой страницей