2016-05-01 6 views
0

Разработка системы управления сотрудниками/студентами с использованием приложения форм Windows C#.
Два разработчика работают над этим проектом и используют две версии visual studio и SQL-серверов. (Один ПК использует VS 2013 Pro и MS SQL express 14, на другом ПК используется предприятие VS 2015 и предприятие SQL 14). Оба компьютера работают через сервер фундаментов команды.Приложение C# не сохраняет данные в базе данных SQL

Приложение C# соединяется с базой данных SQL, и поиск данных проверяется с помощью интерфейсов входа. Имя пользователя и пароли хранятся в таблице, и процесс входа в систему работает нормально. Поэтому он уверен, что соединение с БД не имеет ошибок.

Проблема в том, что когда мы пытались вставить данные в таблицу SQL, C# не обнаруживает ошибок в try/catch exceptions, но данные не хранятся в базе данных. Также использовали command.ExecuteNonQuery().

Не уверен, что в строке подключения возникла проблема.

Это класс connectionManager.

class ConnectionManager 
{ 
    public static SqlConnection connection() 
    { 
     string connectionString = 
      @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\tdsdb.mdf;Integrated Security=True"; 
     SqlConnection con = new SqlConnection(connectionString); 
     con.Open(); 
     return con; 
    } 
} 

Это класс, который обрабатывает операцию вставки SQL.

class Student 
{ 
    public void addStudent(string studid, string fullname, string nameinit, string gend, string dob, int age, string nic, string nicdate, string hotp, string mobtp, string odlno, string odldt, string odlcls, string reqdlcls, int trtds, int active) 
    { 
     string sql= "INSERT INTO tblStudent VALUES ('"+studid+"','"+fullname+"','"+nameinit+"','"+gend+"','"+dob+"','"+age+"','"+nic+"','"+nicdate+"','"+hotp+"','"+mobtp+"','"+odlno+"','"+odldt+"','"+odlcls+"','"+reqdlcls+"','"+trtds+"','"+active+"')"; 
     SqlCommand com = new SqlCommand(sql, ConnectionManager.connection()); 
     com.ExecuteNonQuery(); 
    } 
} 

Это класс, который обрабатывает кнопку отправки операцию CLICK

private void button6_Click(object sender, EventArgs e) 
{ 
    string radtext = ""; 
    bool isChecked = radioButton1.Checked; 
    if(isChecked) 
     radtext = radioButton1.Text; 
    else 
     radtext = radioButton2.Text; 

    string hometp = "+94"+textBox8.Text; 
    string mobiletp = "+94"+textBox9.Text; 

    int activeint = 1; 

    string trtdschk = comboBox3.Text; 
    int trtds = 0; 
    if (trtdschk == "Yes") 
     trtds = 1; 
    else 
     trtds = 0; 

    try 
    { 
     std.addStudent(textBox2.Text, textBox38.Text, textBox4.Text, radtext, dateTimePicker2.Text, int.Parse(textBox6.Text), textBox7.Text, dateTimePicker3.Text, hometp, mobiletp, textBox12.Text, dateTimePicker4.Text, comboBox1.Text, comboBox2.Text, trtds, activeint); 
     MessageBox.Show("Personal details has been successfully added to the database!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message.ToString()); 
    }    
} 
+0

Не знаю, как несколько соединений с базой данных влияют друг на друга, вы должны попытаться просто поддерживать одно соединение с базой данных. Например, используя singleton для подключения к базе данных. –

+0

Не используйте имя файла mdf для строки подключения. Вместо этого подключитесь к имени сервера и включите оператор 'Use DataBaseName'. Возможно, база данных уже привязана к базе данных и не требуется прикреплять ее каждый раз, когда вы используете базу данных. – jdweng

+0

Просто указывая, что ваш код, похоже, уязвим для SQL-инъекции. – yaakov

ответ

0

AFAIK параметризованных запросов лучше. См. Этот общий образец.

using(SqlConnection openCon=new SqlConnection("your_connection_String")) 
    { 
     string saveStaff = "INSERT into tbl_staff (staffName,userID,idDepartment) VALUES (@staffName,@userID,@idDepartment)"; 

     using(SqlCommand querySaveStaff = new SqlCommand(saveStaff)) 
     { 
     querySaveStaff.Connection=openCon; 
     querySaveStaff.Parameters.Add("@staffName",SqlDbType.VarChar,30).Value=name; 
     ..... 
     openCon.Open(); 

     openCon.Close(); 
     } 
    } 

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

https://www.connectionstrings.com/sql-server/

Смежные вопросы