Taglia i caratteri dal set di dati prima di inserire

c# dataset sql sqlbulkcopy

Domanda

Sto eseguendo una query sql che memorizza i risultati nel set di dati e, quindi, se il set di dati contiene righe, verrà eseguita una query da inserire nella tabella. Il problema è che i dati che stanno uscendo sono string e vengono salvati come 001234 mentre io voglio che i dati vengano archiviati nella mia tabella come 1234 dato che è seduto come chiave primaria. Ho pensato di provare a farlo con un per ogni riga nel set di dati e una sottostringa, ma sto ricevendo un errore dicendo: -

Il valore dato di tipo String dall'origine dati non può essere convertito in tipo int della colonna di destinazione specificata.
Sto cercando di memorizzarlo come int nella tabella del database.

        //Runs rollID query and stores in dataset and datatable
    public DataSet GetDataSet(string sqlCommand, string ConnectionString)
    {
        string connectionString = (ConfigurationManager.ConnectionStrings["datConnectionString"].ConnectionString);
        DataSet ds = new DataSet();
        using (SqlCommand cmd = new SqlCommand(
            sqlCommand, new SqlConnection(connectionString)))
        {
            cmd.Connection.Open();
            DataTable rollTable = new DataTable();
            rollTable.Load(cmd.ExecuteReader());
            ds.Tables.Add(rollTable);

            if (rollTable.Rows.Count > 0)
            {
                foreach (DataRow rw in rollTable.Rows)
                {
                    //Get StartTime in Time format
                    string StaffID = rw["staff_code"].ToString();

                    if (string.IsNullOrEmpty(StaffID) == true)
                    {
                        //Do nothing
                    }
                    else
                    {
                        string ShortStaffID = StaffID.Substring(2);
                        rw["staff_code"] = ShortStaffID.ToString();
                    }

                }

                //Gets data from datatable and inserts it into table within database 
                string consString = ConfigurationManager.ConnectionStrings["rollPlusConnectionString"].ConnectionString;
                using (SqlConnection con = new SqlConnection(consString))
                {
                    using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))
                    {

                        //Set the database table name
                        sqlBulkCopy.DestinationTableName = "dbo.roll";

                        if (rollTable.Rows.Count > 0)
                        {
                            con.Open();
                            sqlBulkCopy.WriteToServer(rollTable);
                            con.Close();
                        }
                        else
                        {
                        }
                        return ds;
                    }

                }
            }
        }

    }

Risposta accettata

Not all code paths return a value errore di Not all code paths return a value significa che il metodo ha un'istruzione di return inserita in un blocco di codice che potrebbe non essere eseguita.

Quindi, semplicemente spostando return ds su if block fino alla fine del metodo lo farà funzionare.

AGGIORNARE:

public DataSet GetDataSet(string sqlCommand, string ConnectionString)
{
    string connectionString = (ConfigurationManager.ConnectionStrings["datConnectionString"].ConnectionString);
    DataSet ds = new DataSet();
    using (SqlCommand cmd = new SqlCommand(sqlCommand, new SqlConnection(connectionString)))
    {
        cmd.Connection.Open();
        DataTable rollTable = new DataTable();
        rollTable.Load(cmd.ExecuteReader());
        ds.Tables.Add(rollTable);

        if (rollTable.Rows.Count > 0)
        {
            foreach (DataRow rw in rollTable.Rows)
            {
                //Get StartTime in Time format
                string StaffID = rw["staff_code"].ToString();

                if (string.IsNullOrEmpty(StaffID) == true)
                {
                    //Do nothing
                }
                else
                {
                    string ShortStaffID = StaffID.Substring(2);
                    rw["staff_code"] = ShortStaffID.ToString();
                }

            }

            //Gets data from datatable and inserts it into table within database 
            string consString = ConfigurationManager.ConnectionStrings["rollPlusConnectionString"].ConnectionString;
            using (SqlConnection con = new SqlConnection(consString))
            {
                using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))
                {

                    //Set the database table name
                    sqlBulkCopy.DestinationTableName = "dbo.roll";

                    if (rollTable.Rows.Count > 0)
                    {
                        con.Open();
                        sqlBulkCopy.WriteToServer(rollTable);
                        con.Close();
                    }
                    else
                    {
                    }
                }
            }
        }
    }
    return ds;
}


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow