数据库更改后,我收到一个错误:附加信息:后端发送无法识别的响应类型:r

时间:2017-03-13 08:04:48

标签: c# database psql

我在我的数据库中进行了一些小的更改,并且工作代码开始被错误地添加错误:

  

未处理的类型' System.NotSupportedException'发生了   在Npgsql.dll中

     

其他信息:后端发送了无法识别的响应类型:r

我阅读了一些关于类似错误的主题,所以我打开了一个新连接(conn1)并尝试了这样,但它没有用。我有点失落,因为我不知道是什么导致它。当我尝试调试它时,错误显示在我列出的代码的最后一行。

我的代码:

private void Pocetna_forma_Load(object sender, EventArgs e)
    {
        txt_login_info.ReadOnly = true; //stavlja textbox za login da se ne moze editat

        NpgsqlConnection conn = new NpgsqlConnection("Server=127.0.0.1;Port=5433;User Id=postgres;" +
        "Password=123;Database=postgres;");
        conn.Open();
        //query za broj zaposlenika
        NpgsqlCommand broj_zaposlenik = new NpgsqlCommand("Select count(*) from zaposlenici ;", conn);
        count_zaposlenici = Convert.ToInt32(broj_zaposlenik.ExecuteScalar());
        conn.Close();



        polje = new int[count_zaposlenici];
        polje_brojac = new int[count_zaposlenici];
        int i = 0;


        //polje za evidenciju dolazaka/odlazaka 
        foreach (var item in polje)
        {
            polje_brojac[i] = 1;
            polje[i] = 1;
            i++;
        }      
    }

    private void btn_login_Click(object sender, EventArgs e)
    {
        this.Hide();
        var login_form = new Login();
        login_form.FormClosed += (s, ags) => this.Close();
        login_form.Show();
    }

    private void btn_ok_Click(object sender, EventArgs e)
    {
        string barcode = txt_barcode.Text;

        NpgsqlConnection conn = new NpgsqlConnection("Server=127.0.0.1;Port=5433;User Id=postgres;" +
        "Password=skalinada123;Database=postgres;");
        conn.Open();



        //query provjere za barcode, da li postoji 
        NpgsqlCommand barcode_provjera = new NpgsqlCommand("Select count(*) from zaposlenici where barcode=@barcode;", conn);           
        barcode_provjera.Parameters.AddWithValue("@barcode", barcode.ToString());
        Int32 barcode_check = Convert.ToInt32(barcode_provjera.ExecuteScalar());




        if (barcode_check > 0)
        {

            //query za dohvacanje zaposlenik_id
            NpgsqlCommand id_zaposlenika = new NpgsqlCommand("Select zaposlenik_id from zaposlenici where barcode=@barcode ", conn);
            id_zaposlenika.Parameters.AddWithValue("@barcode", barcode.ToString());
            zaposlenik_id = Convert.ToInt32(id_zaposlenika.ExecuteScalar());//vraca id zaposlenika

            string vrijeme_prijave= DateTime.Now.ToString("HH:mm:ss");
            string datum = DateTime.Now.ToString("dd/MM/yyyy"); ///promjena 

            //query koji provjerava da li je osoba tek dosla na posao ili ce mu se pisati odlazak
            NpgsqlCommand provjera_odlaska = new NpgsqlCommand("select count(*) from radni_sati where datum=@datum and dolazak is not null "+
            " and zaposlenik_id=@zaposlenik_id;", conn);
            provjera_odlaska.Parameters.AddWithValue("@barcode", barcode.ToString());
            provjera_odlaska.Parameters.AddWithValue("@datum", datum.ToString());
            provjera_odlaska.Parameters.AddWithValue("@zaposlenik_id", zaposlenik_id.ToString());
            count_provjera_odlaska = Convert.ToInt32(provjera_odlaska.ExecuteScalar());



            //query za dohvacanje ime i prezime zaposlenika za ispis info-a
            NpgsqlCommand command = new NpgsqlCommand("Select ime,prezime from zaposlenici where barcode=@barcode;", conn);
            command.Parameters.AddWithValue("@barcode", barcode.ToString());
            NpgsqlDataReader dr = command.ExecuteReader();

            while (dr.Read())
            {


                if (polje[zaposlenik_id - 1] == 1 || polje[zaposlenik_id - 1] == 3)
                {
                    info = "Djelatnik " + dr[0].ToString() + " " + dr[1].ToString() + " je uspjesno prijavljen. Vrijeme: " + vrijeme_prijave + "\n";
                    txt_login_info.AppendText(info);//prikazuje tekst djelatnik....

                }
                else if (polje[zaposlenik_id - 1] == 2 || polje[zaposlenik_id - 1] == 4)
                {
                    info = "Djelatnik " + dr[0].ToString() + " " + dr[1].ToString() + " je uspjesno odjavljen. Vrijeme: " + vrijeme_prijave + "\n";
                    txt_login_info.AppendText(info);//prikazuje tekst djelatnik....

                }
                dr.Close();

            }

            if (count_provjera_odlaska == 0)//ako nije upisan radnik na taj dan uopce
            {

                if (polje[zaposlenik_id - 1] == 1)
                {
                    vrijeme_dolaska = DateTime.Now.ToString("HH:mm:ss");
                    vrijemeDolaska = Convert.ToDateTime(vrijeme_dolaska);

                    polje[zaposlenik_id - 1] = 2;
                    // prijavljen_odjavljen = "odjavljen";
                }
                NpgsqlConnection conn1 = new NpgsqlConnection("Server=127.0.0.1;Port=5433;User Id=postgres;" +
                "Password=123;Database=postgres;");
                conn1.Open();

                //query za upis u tablicu radni_sati
                NpgsqlCommand dolazak = new NpgsqlCommand("insert into radni_sati values(default,@datum," +
                    "(select distinct odjel_id from zaposlenici where barcode=@barcode)," +
                    "(select odjel from zaposlenici where barcode=@barcode)," +
                    "(select zaposlenik_id from zaposlenici where barcode=@barcode)," +
                    "(select ime from zaposlenici where barcode=@barcode)," +
                    "(select prezime from zaposlenici where barcode=@barcode)," +
                    "@dolazak,null,null," +
                    "(select bolovanje from zaposlenici where barcode=@barcode)," +
                    "(select godisnji from zaposlenici where barcode=@barcode)," +
                    "(select slobodni_dani from zaposlenici where barcode=@barcode)," + "(select slobodni_dani from zaposlenici where barcode=@barcode)," +
                    "null, null,null)", conn1);
                dolazak.Parameters.AddWithValue("@datum", datum.ToString());
                dolazak.Parameters.AddWithValue("@barcode", barcode.ToString());
                dolazak.Parameters.AddWithValue("@dolazak", vrijemeDolaska.ToString());
                //dolazak.Parameters.AddWithValue("@odlazak", vrijeme_odlaska.ToString());

                NpgsqlDataReader dr1 = dolazak.ExecuteReader();//inserta dolazak
                dr1.Close();

所以它的作用是扫描员工的条形码,当他到达/回家时,它会保存,他工作多少等......当我只扫描一个用户,但是当我尝试扫描一个用户时,一切正常第二个,弹出这个错误。

如果我在调试模式下启动我的程序,并标记该行,第一次来到它,它会显示我说的错误,但如果我"继续"我得到的更多:

  

未处理的类型' System.NotSupportedException'发生在pgsql.dll

     

附加信息:如果底层流不可搜索,则读缓冲区不为空时,无法写入BufferedStream。确保此BufferedStream下面的流可以寻找或避免在此BufferedStream上交错读写操作。

0 个答案:

没有答案