johndevmars Ответов: 1

У меня есть ошибка подключения базы данных, я не могу обработать код con.open error и ip


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Configuration;

namespace Client
{
    class Class2
    {

        string constring = Convert.ToString(ConfigurationSettings.AppSettings["ConnectionString"]);
        SqlCommand cmd1, cmd2, c, c1, cmd3;
        string id, id1, id2, id3, id4;
        int eid, eid1, eid2, eid3, eid4;

        public int idgeneration()
        {
            SqlConnection con = new SqlConnection(constring);
            con.Open();
            SqlCommand c1;
            c1 = new SqlCommand("select max(ID) from Registration", con);
            id = Convert.ToString(c1.ExecuteScalar());
            if (id == "")
            {
                eid = 1;
            }
            else
            {
                eid = Convert.ToInt16(id);
                eid = eid + 1;
            }
            con.Close();
            return eid;
        }

        public int uploadfileid()
        {
            SqlConnection con1 = new SqlConnection(constring);
            con1.Open();
            SqlCommand c1;
            c1 = new SqlCommand("select max(fileid) from uploadfiles", con1);
            id1 = Convert.ToString(c1.ExecuteScalar());
            if (id1 == "")
            {
                eid1 = 1;
            }
            else
            {
                eid1 = Convert.ToInt16(id1);
                eid1 = eid1 + 1;
            }
            con1.Close();
            return eid1;
        }
        public int autoid()
        {
            SqlConnection con4 = new SqlConnection(constring);
            con4.Open();
            SqlCommand c5;
            c5 = new SqlCommand("select max(req_id) from requestfile", con4);
            id2 = Convert.ToString(c5.ExecuteScalar());
            if (id2 == "")
            {
                eid2 = 1;
            }
            else
            {
                eid2 = Convert.ToInt16(id2);
                eid2 = eid2 + 1;
            }
            con4.Close();
            return eid2;
        }
        public void uploadfile(string fi, string finam, byte[] fibytes, string exe, string path1)
        {

            SqlConnection con2 = new SqlConnection(constring);
            con2.Open();
            int n = finam.Length;
            cmd2 = new SqlCommand("insert into uploadfiles values('" + fi + "','" + finam + "',@files,'" + exe + "','" + path1 + "')", con2);
            cmd2.Parameters.AddWithValue("@files", fibytes);
            cmd2.ExecuteNonQuery();
            con2.Close();


        }

        public void requestfile(string req_id, string Filename, string Username, string ipaddress, string ReqDate_Time)
        {

            SqlConnection con2 = new SqlConnection(constring);
            con2.Open();
           
            cmd2 = new SqlCommand("insert into requestfile values('" + req_id + "','" + Filename + "','" + Username + "','" +ipaddress+"','"+ ReqDate_Time + "')", con2);
          
            cmd2.ExecuteNonQuery();
            con2.Close();


        }
        public void usersearch(string auid, string reqid, string usrid, string unam, string filnm, string dat, string sta)
        {
            SqlConnection con3 = new SqlConnection(constring);
            con3.Open();
            cmd3 = new SqlCommand("insert into usersearch values('" + auid + "','" + reqid + "','" + usrid + "','" + unam + "','" + filnm + "','" + dat + "','Key not send')", con3);
            cmd3.ExecuteNonQuery();
            con3.Close();
        }
        public void keymaintain(string aid, string reqid, string usrid, string secretky, string path, string path1)
        {
            SqlConnection con4 = new SqlConnection(constring);
            con4.Open();
            cmd1 = new SqlCommand("insert into keymaintenance values('" + aid + "','" + reqid + "','" + usrid + "','" + secretky + "','" + path + "','')", con4);
            cmd1.ExecuteNonQuery();
            con4.Close();
        }

    }
}


Что я уже пробовал:

я попробовал это сделать, но не смог определить, как исправить ошибки

CHill60

Кроме того, никогда не объединяйте строки для создания SQL-запросов. Вы оставляете себя под угрозой атак SQL-инъекций. Вместо этого используйте SqlParameters

1 Ответов

Рейтинг:
1

#realJSOP

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

try
{
    using (SqlConnection con = new SqlConnection(constring))
    {
        con.Open();
        using (SqlCommand c1 = new SqlCommand("select max(ID) from Registration", con))
        {
            int id = Convert.ToString(c1.ExecuteScalar());
            if (id == "")
            {
                eid = 1;
            }
            else
            {
                eid = Convert.ToInt16(id);
                eid = eid + 1;
            }
        }
    }
}
catch (Exception ex)
{ 
   
} // put a breakpoint on this bracket, and when your code fails, inspect "ex"


Visual Studio и .Net предоставляет вам все инструменты, необходимые для отладки вашего кода. Научитесь пользоваться этими инструментами.

И я должен спросить - почему вы сами генерируете идентификатор? База данных может сделать это за вас, и вы не рискуете столкнуться с коллизиями идентификаторов в случае множественного доступа к базе данных между коммитами.