Приложение c# не сохраняет данные в базу данных SQL

Разработка системы управления сотрудника/студента с приложением c# windows form.
Два разработчика работают над этим проектом и используют две версии visual studio и SQL Server. (Один ПК использует VS 2013 Pro и MS SQL express 14, другой ПК использует VS 2015 enterprise и SQL 14 enterprise). Оба компьютера работают через team foundation server.

Приложение 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 insert.

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();
    }
}

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

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());
    }            
}

1 ответ

  1. 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/