在插入之前从数据集中删除字符

Cut characters out of dataset before insert

我正在 运行 宁一个 sql 查询,它将结果存储在数据集中,然后如果数据集有行,它将 运行 一个查询插入 table。问题是输出的数据是字符串,并保存为 001234,而我希望数据以 1234 的形式存储在我的 table 中,因为它作为主键。我曾想尝试用数据集中的每一行和一个子字符串来做到这一点,但我收到一条错误消息:-

无法将数据源中 String 类型的给定值转换为指定目标列的 int 类型。
我正在尝试将其作为 int 存储在数据库 table.

        //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;
                    }

                }
            }
        }

    }

Not all code paths return a value 错误意味着您的方法有一个 return 语句放在可能无法执行的代码块中。

因此,只需将 return ds 移出 if 块到您的方法的末尾即可。

更新:

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